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 Element Target 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>