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