2012-08-01 24 views
6

私の解決策では、ファイルをさまざまな場所にコピーするなど、最後に実行する必要があるタスクがあります。 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"に変更すると、ターゲットがビルドターゲットの内側に配置されます。ただし、これには「ビルド」ターゲットの内容に関する知識が必要であり、他のプロジェクトタイプでは機能しない可能性があります。

質問:

  1. AfterTargets="Build"障害が解決ビルドに失敗して取得する方法はありますか?
  2. そうでない場合は、人々が自分のプロジェクトにAfterTargets="Build"を追加していないことを自動的に検証する方法はありますか?

答えて

0

あなたは、送信元と宛先の内容が同じでない場合は、エラーをスローする<コピー/ >タスクの後<エラー/ >を追加しようとしたことがありますか?

関連する問題