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

标签 msbuild

我正在使用两个目标文件。在一个目标文件上,我调用第二个目标文件内的目标。然后,第二个 TARGET 调用另一个 TARGET,该 TARGET 有 6 个其他 TARGET 调用,这些调用执行许多不同的操作(除了调用其他嵌套 TARGET(但在同一 TARGET 文件内))。问题是,在我调用 6 个 TARGETS 的 TARGET 上,只有第一个正在执行。该程序找不到调用第二个、第三个、第四个、第五个和第六个目标的方法。可以调用和运行的嵌套目标数量是否有限制?没有什么是失败的。问题是其他 TARGET 调用没有运行。感谢您提供的任何帮助。

最佳答案

嵌套目标的数量没有限制。您是否尝试过使用所有日志运行 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 值非常重要。

关于msbuild - 所有目标未被调用(嵌套目标未被执行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798762/

相关文章:

msbuild - 在机器上未安装 4.5 运行时的情况下构建 4.5 代码?

c++ - MongoDB C Driver Windows 无法解析的外部符号

silverlight - 如何使用 Microsoft.Build.BuildEngine 构建 Silverlight 项目?

visual-studio-2010 - 对于面向 .NET Framework 2.0 和 3.5 的项目,将 MSBuild 升级到 VS2010 有什么影响?

visual-studio-2010 - 在64位构建服务器上将网站项目构建为32位

c# - 使用具有多个配置的 msbuild 构建单个项目

SSIS 项目无法在自托管代理上构建

c# - CodeAnalysisTreatWarningsAsErrors 没有破坏构建

c# - 构建时 T4 转换的产品仅在下一次构建中使用

c# - 警告 MSB4056 : The MSBuild engine must be called on a single-threaded-apartment