【问题标题】:AfterTarget not fired in AfterBuildAfterTarget 未在 AfterBuild 中触发
【发布时间】:2014-04-13 11:05:04
【问题描述】:

在我的项目中,我想在 AfterBuild 之后运行 ILMerge 目标,所以我做了以下操作:

  <Target Name="AfterBuild" AfterTargets="ILMerge" >
     <Message Importance="High" Text="AfterBuild"></Message>
  </Target>
  <Target Name="ILMerge">
   <Message Text="IlMerging" Importance="High" />
  </Target>

但是没有显示“IlMerging”文本,这意味着 AfterBuild 中的 AfterTargets 没有被触发。

为什么?

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    如果您想在AfterBuild 目标之后运行ILMerge 目标,这就是您应该编写脚本的方式。

      <Target Name="AfterBuild" >
         <Message Importance="High" Text="AfterBuild"></Message>
      </Target>
      <Target Name="ILMerge" AfterTargets="AfterBuild">
       <Message Text="IlMerging" Importance="High" />
      </Target>
    

    输出:

    AfterBuild: AfterBuild
    
    ILMerge: ILMerge
    

    如果应该在 ILMerge 目标之后运行 Target AfterBuild,那么您需要将 AfterBuild 目标更改为 KMoraz 建议的目标。

      <Target Name="AfterBuild" DependsOnTargets="ILMerge" >
         <Message Importance="High" Text="AfterBuild"></Message>
      </Target>
      <Target Name="ILMerge" >
       <Message Text="IlMerging" Importance="High" />
      </Target>
    

    输出:

    ILMerge: ILMerge
    
    AfterBuild: AfterBuild
    

    两个脚本都使用命令行

    msbuild testtarget.xml /t:AfterBuild

    【讨论】:

    • 谢谢,这成功了!我对 AfterTarget 做出了错误的假设。我想我必须把它放在 AfterBuild 目标中,就像告诉他:“当你准备好启动 ILMerge 目标”
    【解决方案2】:

    What is the difference between 'DependsOnTargets' and 'AfterTargets'?

    在您的情况下使用DependsOnTargets,因为您的目标没有定义BeforeTargets 以使执行链正常工作。

    <Target Name="AfterBuild" DependsOnTargets="ILMerge" >
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2021-07-21
      相关资源
      最近更新 更多