PostBuildEvent和AfterBuild目标之间的Visual Studio项目文件差异?

问题描述

| 有人可以解释这些之间的区别:
<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:在构建完成后有条件地运行。它的运行时间非常可配置,但通常只有在构建成功完成并产生新输出后才能运行。