方法 : タスクで発生したエラーを無視する
ビルド時に特定のタスクで発生したエラーを無視したい場合があります。重要性の低いタスクであれば、エラーが発生しても必要な出力が生成されている限りはビルドを続行させることができます。たとえば、あるプロジェクトで、1 コンポーネントのビルドが完了するたびに SendMail タスクを使用して電子メール メッセージを送信している場合、仮にメール サーバーの障害でステータス メッセージを送信できなかったとしても、ビルドは最後まで続行させたいと考えるのが一般的です。また、ビルド中に生成された中間ファイルを削除するようにしているとき、これらのファイルが削除されなかったとしても、やはり、ビルドは最後まで続行させることができます。
ContinueOnError 属性の使用
Task 要素の ContinueOnError は、タスク エラーが発生した場合にビルドを停止するか続行するかを制御するための属性です。この属性は、ビルドが続行される場合はエラーがエラーまたは警告として扱うかどうかを制御します。
ContinueOnError の属性は次の値の1個含めることができます。:
WarnAndContinue か true。タスクが失敗した場合は、[ターゲット] の要素とビルドのその後のタスクは実行を継続タスクのすべてのエラーは警告として処理されます。
ErrorAndContinue。タスクが失敗した場合は、Target の要素とビルドのその後のタスクは実行を継続タスクのすべてのエラーはエラーとして扱われます。
ErrorAndStop か false (既定値)。タスクが失敗した場合は、Target の要素とビルドの残りのタスクは実行されず、Target の要素全体とビルドが失敗したと見なされます。
4.5より前のバージョンの.NET Frameworkは true と false の値をサポートしていました。
ブール型 (ContinueOnError) の既定値は ErrorAndStop です。セット ErrorAndStopに属性、動作をプロジェクト ファイルの読み取りユーザーに明示的にします。
タスクで発生したエラーを無視するには
タスクの ContinueOnError 属性を使用します。次に例を示します。
<Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>
使用例
次のコード例では、Delete タスクでエラーが発生しても Build ターゲットは最後まで実行され、ビルドは成功と見なされます。
<Project DefaultTargets="FakeBuild"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Files Include="*.obj"/>
</ItemGroup>
<Target Name="Clean">
<Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>
</Target>
<Target Name="FakeBuild" DependsOnTargets="Clean">
<Message Text="Building after cleaning..."/>
</Target>
</Project>