据我所知,目前我们可以通过使用属性DependsOnTargets或使用任务来调用目标中的其他目标<CallTarget ...>
我的问题是我们应该何时使用每个案例?
Jul*_*rau 54
MSBuild提供了不同的调用目标的方法:
使用CallTarget是一种显式方法,您从第一个目标开始,并按您想要的顺序显式调用每个目标.
虽然DependsOnTargets是隐式方法,但MSBuild通过检查目标的依赖性来推断调用顺序.
有没有什么区别CallTarget,并DependsOnTargets在目标上可以运行的时间数:目标永远不会单一的构建过程中运行两次(除非你使用具有不同属性的MSBuild任务)
动态项和属性的一个限制CallTarget是:您无法访问在使用CallTarget调用的另一个目标中的目标中创建的项或属性:
<Target Name="Caller">
<CreateProperty Value="MyValue">
<OutputTaskParameter="Value" PropertyName="NewProperty"/>
</CreateProperty>
<CallTarget Targets="Called"/>
</Target>
<Target Name="Called">
<Message Text="$(NewProperty)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
在创建它们的目标执行完毕之前,不会发布动态属性.你没有使用这个问题DependsOnTarget
您应该使用DependsOnTargets需要在目标之前执行的目标.并且CallTarget目标在目标之后执行.这就是微软这样做的方式.
<Target Name="CoreCompile"
DependsOnTargets="$(CoreCompileDependsOn)">
<!-- Target execution -->
<Csc ... />
...
<!-- Targets to execute after -->
<CallTarget Targets="$(TargetsTriggeredByCompilation)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8864 次 |
| 最近记录: |