6
在所有其他目標運行完畢後,是否有辦法運行某個目標,無論其成功或失敗?MSBuild的「最後」目標
try...finally equivalent in MsBuild是相關的,但只涉及一小組目標。我需要爲整個軟件包提供幾十個子版本。
在所有其他目標運行完畢後,是否有辦法運行某個目標,無論其成功或失敗?MSBuild的「最後」目標
try...finally equivalent in MsBuild是相關的,但只涉及一小組目標。我需要爲整個軟件包提供幾十個子版本。
這樣做沒有直接的方法。通常在MSBuild中,很難知道目標的實際順序,只有相對順序。你想用這個目標做什麼?
也許如果你包裹使用一個或多個CallTargets在頂層目標的事情,那麼你可以使用一個<OnError .../>
任務運行最終目標?
<Target Name="CompleteBuild">
<CallTarget Targets="Target1"/>
<CallTarget Targets="Target2"/>
<CallTarget Targets="FinalTarget"/>
<OnError ExecuteTargets="FinalTarget"/>
</Target>
下面是我正在做的:修改AssemblyVersion,完成所有構建,並作爲最後一步將AssemblyVersion恢復到原來的狀態。似乎沒有這樣做的好方法。 – 2011-01-22 19:11:27
romkyns:我正在做同樣的事情。實現它的方法是在自己的csproj文件中重寫CoreBuild目標,並使用附加的OnError屬性來指定如果構建失敗時應該運行AfterBuild目標。這樣,無論成功或失敗,「AfterBuild」目標都將在每個構建中運行。有關覆蓋'CoreBuild'目標的信息,請參閱http://stackoverflow.com/a/5169881/278185。 – Dave 2012-05-18 15:53:27