Ignorieren von Fehlern in Aufgaben
Manchmal benötigen Sie ein Build, der in bestimmten Aufgaben fehlertolerant ist. Wenn diese nicht kritischen Aufgaben fehlschlagen, soll der Buildvorgang fortgesetzt werden, da er immer noch die gewünschte Ausgabe erzeugen kann. Wenn z.B. ein Projekt eine Aufgabe SendMail
zum Senden einer E-Mail-Nachricht verwendet, nachdem jede Komponente erzeugt wurde, sollte der Build bis zum Abschluss weiterarbeiten, selbst wenn der Mailserver nicht verfügbar ist und die Statusnachricht nicht gesendet werden kann. Oder wenn beispielsweise temporäre Dateien während des Buildvorgangs normalerweise gelöscht werden, sollte der Build auch bis zum Abschluss weiterarbeiten, selbst wenn diese Dateien nicht gelöscht werden können.
Zusätzlich zu den hier beschriebenen aufgabenspezifischen Methoden können Sie auch die allgemeinen Möglichkeiten von MSBuild verwenden, um Warnungen zu ignorieren, z. B. mithilfe der Eigenschaft MSBuildWarningsAsMessages
. Siehe Gemeinsame MSBuild-Projekteigenschaften.
Verwenden des ContinueOnError-Attributs
Das Attribut ContinueOnError
des Elements Task
steuert, ob ein Build beendet oder fortgesetzt wird, wenn eine Aufgabe fehlschlägt. Dieses Attribut steuert auch, ob Fehler als Fehler oder Warnungen behandelt werden, wenn der Buildvorgang fortgesetzt wird.
Das Attribut ContinueOnError
kann einen oder mehrere der folgenden Werte enthalten:
WarnAndContinue oder TRUE. Wenn eine Aufgabe fehlschlägt, werden nachfolgende Aufgabe im Element Ziel und im Build weiterhin ausgeführt, und alle Fehler von der Aufgabe werden als Warnungen behandelt.
ErrorAndContinue. Wenn eine Aufgabe fehlschlägt, werden nachfolgende Aufgabe im Element
Target
und im Build weiterhin ausgeführt, und alle Fehler von der Aufgabe werden als Fehler behandelt.ErrorAndStop oder false (Standard). Wenn eine Aufgabe fehlschlägt, werden die übrigen Aufgaben im Element
Target
und im Build nicht ausgeführt, und das komplette ElementTarget
sowie der Build wird als fehlgeschlagen betrachtet.
Versionen von .NET Framework vor 4.5 unterstützten nur die Werte true
und false
.
Der Standardwert von ContinueOnError
ist ErrorAndStop
. Wenn Sie das Attribut auf ErrorAndStop
festlegen, machen Sie das Verhalten für jeden explizit, der die Projektdatei lesen kann.
So ignorieren Sie Fehler in einer Aufgabe
Verwenden Sie das Attribut ContinueOnError
der Aufgabe. Zum Beispiel:
<Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, dass das Build
-Ziel weiter ausgeführt wird und der Build als erfolgreich betrachtet wird, selbst wenn die Aufgabe Delete
fehlschlägt.
<Project DefaultTargets="FakeBuild"
xmlns="http://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>