我有一个目标,我要再打2个目标。
选项1
<Target Name="CoreBuildSubSystem" DependsOnTargets="BuildDotNETSolutions;CopySubSystemDOs;">
</Target>
选项2
<Target Name="CoreBuildSubSystem">
<MSBuild Targets="BuildDotNETSolutions" BuildInParallel="false"></MSBuild>
<MSBuild Targets="CopySubSystemDOs" BuildInParallel="true"></MSBuild>
</Target>
他们在做同样的活动吗?我想第二种方法更快,因为它允许BuildInParallel = True。我的理解是否正确?
答案 0 :(得分:1)
这两种实现方式与 BuildDotNETSolutions 和 CopySubSystemDOs 按顺序执行的效果完全相同。
坚持使用选项1,因为它遵循更好的MS Build实践,因为您在DependsOnTargets属性中声明目标的依赖关系,这使得构建引擎在声明输入和输出时决定目标是否过期。 选项1也更易于维护,因为属性和项目组可以自然访问,您不需要将它们作为MS Build元素的属性传递。
选项2目前不允许 BuildDotNETSolutions 和 CopySubSystemDOs 并行构建。您需要按如下方式更改它以允许并行构建目标。 然而,这种方法会以递归方式构建项目,这将使跟随你的人诅咒你的名字。
<Target Name="CoreBuildSubSystem">
<MSBuild Projects=$(MSBuildThisFileFullPath)
Targets="BuildDotNETSolutions;CopySubSystemDOs"
BuildInParallel="true" />
</Target>