在我的项目中,我想在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。

为什么?

最佳答案

如果要在ILMerge目标之后运行AfterBuild目标,这是编写脚本的方式。

  <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


如果目标AfterBuild应该在ILMerge目标之后运行,则需要将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

09-18 03:42