【发布时间】:2009-12-13 16:08:18
【问题描述】:
我的 msbuild 目标文件包含以下部分:
<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中ItemGroup部分中的Project元数据。 - 在
Target语句本身中传递给MSBuild任务。
我想知道是否可以删除第二个实例并将其替换为对目标的Project 元数据的引用,Target 任务的名称是什么?
对(Targets.DependsOnTargets) 元数据提出了完全相同的问题。它被提及两次,很像 %(Targets.Project) 元数据。
谢谢。
编辑:
我可能应该描述解决方案必须满足的约束:
- 我希望能够轻松构建单个项目。今天我可以简单地执行
msbuild file.proj /t:T1来构建T1 目标,我希望保留这个能力。 - 我想强调的是,有些项目依赖于其他项目,所以
DependsOnTargets属性对他们来说是非常必要的。
【问题讨论】: