&引用;最后";MSBuild的目标

&引用;最后";MSBuild的目标,msbuild,Msbuild,是否有一种方法可以在运行所有其他目标之后运行某个目标,而不管其成功或失败 是相关的,但只涉及一小部分目标。我需要一个包含几十个子版本的完整包。没有直接的方法可以做到这一点。通常在MSBuild中,很难知道目标的实际顺序,只能知道相对顺序。您打算如何处理此目标?如果您使用一个或多个CallTargets将内容包装到顶级目标中,那么您可以使用任务来运行最终目标 <Target Name="CompleteBuild"> <CallTarget Targets="Target1"

是否有一种方法可以在运行所有其他目标之后运行某个目标,而不管其成功或失败


是相关的,但只涉及一小部分目标。我需要一个包含几十个子版本的完整包。

没有直接的方法可以做到这一点。通常在MSBuild中,很难知道目标的实际顺序,只能知道相对顺序。您打算如何处理此目标?

如果您使用一个或多个CallTargets将内容包装到顶级目标中,那么您可以使用
任务来运行最终目标

<Target Name="CompleteBuild">
  <CallTarget Targets="Target1"/>
  <CallTarget Targets="Target2"/>
  <CallTarget Targets="FinalTarget"/>

  <OnError ExecuteTargets="FinalTarget"/>
</Target>


下面是我要做的:修改AssemblyVersion,完成所有构建,最后一步是将AssemblyVersion恢复到原来的状态。这似乎不是一个好办法。隆金:我也在做同样的事情。方法是在您自己的csproj文件中覆盖
CoreBuild
目标,使用一个额外的
OnError
属性指定如果构建失败,应该运行
AfterBuild
目标。这样,无论成功与否,
AfterBuild
目标都将在每个构建上运行。有关覆盖
CoreBuild
目标的信息,请参阅。