是否可以从MSBuild中的目标实现中引用目标的元数据?
我的msbuild目标文件包含以下部分:是否可以从MSBuild中的目标实现中引用目标的元数据?,msbuild,metadata,Msbuild,Metadata,我的msbuild目标文件包含以下部分: <ItemGroup> <Targets Include="T1"> <Project>A\B.sln"</Project> <DependsOnTargets>The targets T1 depends on</DependsOnTargets> </Targets> <Targets Include="T2"> <
<ItemGroup>
<Targets Include="T1">
<Project>A\B.sln"</Project>
<DependsOnTargets>The targets T1 depends on</DependsOnTargets>
</Targets>
<Targets Include="T2">
<Project>C\D.csproj"</Project>
<DependsOnTargets>The targets T2 depends on</DependsOnTargets>
</Targets>
...
</ItemGroup>
<Target Name="T1" DependsOnTargets="The targets T1 depends on">
<MSBuild Projects="A\B.sln" Properties="Configuration=$(Configuration)" />
</Target>
<Target Name="T2" DependsOnTargets="The targets T2 depends on">
<MSBuild Projects="C\D.csproj" Properties="Configuration=$(Configuration)" />
</Target>
A\B.sln“
目标T1取决于
C\D.csproj“
目标T2取决于
...
如您所见,A\B.sln
出现两次:
ItemGroup
部分中T1
的Project
元数据MSBuild
任务的Target
语句中项目
元数据的引用,该目标
任务的名称是什么
对于(Targets.DependsOnTargets)
元数据,会提出完全相同的问题。它与%(Targets.Project)
元数据一样被提到了两次
谢谢
编辑:
我可能应该描述解决方案必须满足的约束:
msbuild file.proj/t:T1
即可构建T1目标,我希望保留此功能DependsOnTargets
属性对它们来说是非常必要的目标名称必须是固定值,因此这里的名称不起作用 我还建议不要在DependsOnTargets表达式内部使用。如果你不完全理解正在发生的事情,这可能会导致奇怪的行为 在您的情况下,您可能只需要创建一个“驱动程序”目标,它使用这些项来执行构建。唯一困难的部分是您试图执行的目标的依赖性。我不确定你打算做什么的细节,所以我不能提出任何建议,但对于另一个,请考虑创建一个类似的目标
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Targets Include="T1">
<Project>A\B.sln"</Project>
<DependsOnTargets>The targets T1 depends on</DependsOnTargets>
</Targets> <Targets Include="T2">
<Project>C\D.csproj"</Project>
<DependsOnTargets>The targets T2 depends on</DependsOnTargets>
</Targets> ...
</ItemGroup>
<Target Name="Build">
<!--
This will be executed once for every unique value of Project in the
Target item group
-->
<MSBuild Projects="%(Targets.Project)"
Properties="Configuration=$(Configuration)"
</Target>
</Project>
A\B.sln“
目标T1取决于
C\D.csproj“
目标T2取决于
...
嗨,谢谢你的及时回复。我修改了我的问题,澄清了几点。顺便说一句,我已经在使用你建议的清理目标的结构,因为我通常清理所有的项目。但是我需要一种构建单个项目的能力,我不知道您的解决方案如何允许我这样做,更不用说它忽略依赖关系了。