未调用所有目标(嵌套目标未被执行)

时间:2010-05-09 18:54:46

标签: msbuild

我正在使用两个TARGET文件。在一个TARGET文件中,我调用第二个TARGET文件中的TARGET。然后第二个TARGET调用另一个TARGET,它有6个其他TARGET调用,它们执行许多不同的操作(除了调用其他嵌套的TARGETS(但在同一个TARGET文件中))。问题在于,在我称之为6 TARGETS的TARGET上,只有第一个正在执行。该计划没有找到调用第2,第3,第4,第5和第6目标的方法。可以调用和运行的嵌套TARGET的数量是否有限制?没有什么是失败的。问题是其他TARGET调用没有运行。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:5)

嵌套的目标数量没有限制。您是否尝试使用所有日志运行msbuild以查看未调用目标的原因:

msbuild [project.file] /verbosity:detailed 

我认为这是由于未满足的条件(目标上的Condition属性),未更改的输入(目标上的Input属性)或者您尝试调用相同的目标倍数。

多次调用相同的目标

  • 使用MSBuild任务:

    <!-- The target we want to execute multiple times -->
    <Target Name="VeryUsefulOne">
      <Message Text="Call VeryUsefulOne Target"/>
    </Target>
    
    <Target Name="One">
      <Message Text="One"/>
      <MSBuild Targets="VeryUsefulOne"
               Properties="stage=one" 
               Projects="$(MSBuildProjectFile)"/>
    </Target>
    
    <Target Name="Two">
      <Message Text="Two"/>
      <MSBuild Targets="VeryUsefulOne"
               Properties="stage=two" 
               Projects="$(MSBuildProjectFile)"/>
    </Target>
    
    <Target Name="OneTwo">
      <CallTarget Targets="One;Two"/>
    </Target>
    

在呼叫之间更改Properties值非常重要。