私の解決策では、ファイルをさまざまな場所にコピーするなど、最後に実行する必要があるタスクがあります。 AfterTargets="Build"
で実装します。Afterターゲットの失敗が失敗しないmsbuild run
<Target Name="CopyStuff" AfterTargets="Build">
<Copy SourceFiles="..." DestinationFolder="..." />
</Target>
Ifはこれを実装しています。しかし、(いない個々のプロジェクト!)ソリューションを構築する際にコピーが失敗した場合、我々は赤、ビルド警告が表示されますが、MSBuildの(したがって、TFSのビルドが)成功する:私の理解に
> msbuild /t:clean;build my.sln
(...)
(in red...) error MSB3021: Unable to copy file (...)
> echo %errorlevel%
0 <<<<<<< This means succeeded
を、それがためにMSBuildのです主要な "ビルド"ターゲットが合格していれば、すべてが成功したと考えています。
私たちの回避策 - ターゲットをBeforeTargets="AfterBuild"
に変更すると、ターゲットがビルドターゲットの内側に配置されます。ただし、これには「ビルド」ターゲットの内容に関する知識が必要であり、他のプロジェクトタイプでは機能しない可能性があります。
質問:
AfterTargets="Build"
障害が解決ビルドに失敗して取得する方法はありますか?- そうでない場合は、人々が自分のプロジェクトに
AfterTargets="Build"
を追加していないことを自動的に検証する方法はありますか?