2011-05-25 54 views

回答

15

PostBuildEvent屬性能夠保存作爲Command屬性傳遞給Exec任務的命令。基本上你最終的目標看起來像這樣,

<Target Name="PostBuildEvent"> 
    <Exec Command="$(PostBuildEvent)" /> 
</Target> 

您可以配置的條件時,這將在IDE中的設置來運行,默認情況下它只有成功構建運行。

AfterBuild目標能夠包含任意MSBuild任務,包括一個或多個Exec任務或MSBuild可用的任何其他任務,這可以提高複雜性。

根據執行時間,PostBuildEvent目標在「CoreBuild」之前運行,而「AfterBuild」目標在「CoreBuild」之後運行。如果佈局非常重要,可以使用$(DependsOn ..)聲明或者在新目標上指定BeforeTargets和AfterTargets來製作自己的目標,並將其連接到需要運行的版本中。

+0

PostBuildEvent在CoreBuild之後運行 – JaredPar 2011-05-25 18:09:45

+1

從技術上講,PostBuildEvent運行在CoreBuild相關目標的末尾,這些目標都在CoreBuild目標運行之前執行,但CoreBuild只是一個空目標這似乎只是作爲DependsOn目標列表的交匯點而存在。它不會在「CoreBuild之後」運行,只是在CoreBuild運行的所有有用內容的末尾。請參閱Microsoft.Common.targets〜560行(2010 SP1)。 – 2011-05-25 23:42:03

+0

哦,是的,我忘記它是DependsOn列表的一部分,所以是它運行之前。我不斷閱讀,因爲CoreBuild執行...而不是CoreBuild DependsOn ... – JaredPar 2011-05-26 00:00:30

16

PostBuildEvent和AfterBuild都是MSBuild目標。兩者之間的區別是,當他們被調用

  • AfterBuild周圍的條件:它運行在構建目標的最後一個動作,並這樣做,不論構建是否成功。它在PostBuildEvent之後運行(如果它運行的話)
  • PostBuildEvent:這在構建完成後有條件地運行。它在運行時是非常可配置的,但通常只有在構建成功完成併產生新輸出時纔會運行。
+0

一種語法比另一種更受歡迎嗎? – Sako73 2011-05-25 17:56:47

+1

取決於你的場景,但通常人們使用PostBuildEvent – JaredPar 2011-05-25 18:10:21

相關問題