在我的项目中,我希望在AfterBuild之后运行ILMerge目标,所以我做了以下事情:
<Target Name="AfterBuild" AfterTargets="ILMerge" >
<Message Importance="High" Text="AfterBuild"></Message>
</Target>
<Target Name="ILMerge">
<Message Text="IlMerging" Importance="High" />
</Target>
但是&#34; IlMerging&#34;不显示文本,这意味着AfterBuild中的AfterTargets未被触发。
为什么?
答案 0 :(得分:8)
如果您想在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
如果Target 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
答案 1 :(得分:2)
请参阅What is the difference between 'DependsOnTargets' and 'AfterTargets'?
在您的情况下使用DependsOnTargets
,因为您的目标没有为执行链定义BeforeTargets
。
<Target Name="AfterBuild" DependsOnTargets="ILMerge" >