有人可以解释这些之间的差异:
<Target Name="AfterBuild">
<!-- task here -->
</Target>
和
<PropertyGroup>
<PostBuildEvent>copy "$(ProjectDir)\..\lib\$(PlatformName)\x.dll" .</PostBuildEvent>
</PropertyGroup>
谢谢。
答案 0 :(得分:18)
PostBuildEvent和AfterBuild都是MSBuild目标。两者之间的区别在于调用它们的条件
答案 1 :(得分:17)
PostBuildEvent属性能够保存作为Command属性传递给Exec任务的命令。基本上你最终会得到一个看起来像这样的目标,
<Target Name="PostBuildEvent">
<Exec Command="$(PostBuildEvent)" />
</Target>
您可以配置使用IDE中的设置运行此条件的条件,默认情况下它仅在成功构建时运行。
AfterBuild目标能够包含任意MSBuild任务,包括一个或多个Exec任务或MSBuild可用的任何其他任务,这样可以提高复杂性。
就执行时而言,PostBuildEvent目标在“CoreBuild”之前运行,而“AfterBuild”目标在“CoreBuild”之后运行。如果放置很关键,您可以使用$(DependsOn ..)声明或在新目标上指定BeforeTargets和AfterTargets来制作自己的目标并将其连接到需要运行的构建中。