AfterTargets失败不会使msbuild运行失败

Jon*_*han 6 msbuild

在我的解决方案中,某些项目具有需要在最后运行的任务,例如将文件复制到各个位置.我们用以下方法实现AfterTargets="Build":

<Target Name="CopyStuff" AfterTargets="Build">
    <Copy SourceFiles="..." DestinationFolder="..." />
</Target>
Run Code Online (Sandbox Code Playgroud)

如果有效.但是,在构建解决方案(而不是单个项目!)时,如果复制失败,我们会收到红色构建警告,但msbuild(因此TFS构建)成功:

> msbuild /t:clean;build my.sln
(...)
(in red...) error MSB3021: Unable to copy file (...)

> echo %errorlevel%
0     <<<<<<< This means succeeded
Run Code Online (Sandbox Code Playgroud)

据我所知,这是因为msbuild认为只要主要的"Build"目标通过,一切都会过去.

我们的解决方法 - BeforeTargets="AfterBuild"将目标更改为,将目标置于Build目标中.但是,这需要了解"构建"目标的内容,并且可能不适用于其他项目类型.

题:

  1. 有没有办法让AfterTargets="Build"失败的解决方案构建失败?
  2. 如果没有,有没有办法自动验证人们没有添加AfterTargets="Build"到他们的项目中?

Nic*_*eus 0

您是否尝试过在 <Copy /> 任务后添加 <Error /> 以在 Source 和 Destination 的内容不相同时引发错误?


归档时间:

查看次数:

483 次

最近记录:

12 年,6 月 前