问题描述
|
有人可以解释这些之间的区别:
<Target Name=\"AfterBuild\">
<!-- task here -->
</Target>
和:
<PropertyGroup>
<PostBuildEvent>copy \"$(ProjectDir)\\..\\lib\\$(PlatformName)\\x.dll\" .</PostBuildEvent>
</PropertyGroup>
谢谢。
解决方法
PostBuildEvent属性能够保存作为Command属性传递给Exec任务的命令。从本质上讲,您最终得到的目标看起来像这样,
<Target Name=\"PostBuildEvent\">
<Exec Command=\"$(PostBuildEvent)\" />
</Target>
您可以配置条件,使其在IDE中通过设置运行,默认情况下,它仅在成功的构建上运行。
AfterBuild目标能够包含任意MSBuild任务,包括一个或多个Exec任务或MSBuild可用的任何其他任务,这会增加复杂性。
就执行时间而言,PostBuildEvent目标运行在\“ CoreBuild \”之前,而\“ AfterBuild \”目标运行在\“ CoreBuild \”之后。如果放置至关重要,则可以使用$(DependsOn ..)声明,或在新目标上指定BeforeTargets和AfterTargets,制作自己的目标并将其连接到需要运行的构建中的任何位置。
,PostBuildEvent和AfterBuild都是MSBuild目标。两者之间的区别在于调用它们时周围的条件
AfterBuild:此操作作为Build目标中的最后一个操作运行,无论构建是否成功,都将执行此操作。它在PostBuildEvent之后运行(如果完全运行)
PostBuildEvent:在构建完成后有条件地运行。它的运行时间非常可配置,但通常只有在构建成功完成并产生新输出后才能运行。