Freigeben über


Gewusst wie: Ignorieren von Fehlern in Aufgaben

In einigen Situationen werden Sie es vielleicht vorziehen, dass der Build Fehler in bestimmten Aufgaben toleriert. Der Buildvorgang soll also auch dann fortgesetzt werden, wenn diese nicht kritischen Aufgaben fehlschlagen, da trotzdem die erforderliche Ausgabe generiert werden kann. Wenn ein Projekt beispielsweise eine SendMail-Aufgabe verwendet, um nach der Erstellung jeder Komponente eine E-Mail-Nachricht zu versenden, erscheint es Ihnen u. U. vertretbar, dass der Buildvorgang fortgesetzt wird, auch wenn die Mailserver nicht erreichbar sind und keine Statusmeldungen versendet werden können. Möglicherweise möchten Sie den Build auch abschließen, wenn Zwischendateien, die während des Buildvorgangs normalerweise gelöscht werden, nicht gelöscht werden können.

Verwenden des ContinueOnError-Attributs

Das ContinueOnError-Attribut des Task-Elements steuert, ob der Buildvorgang bei Fehlschlagen einer Aufgabe angehalten oder fortgesetzt wird. Dieses Attribut steuert auch, ob Fehler als Fehler oder Warnungen behandelt werden, wenn der Build fortgesetzt wird.

Das ContinueOnError-Attribut kann einen der folgenden Werte enthalten:

  • WarnAndContinue oder true. Wenn eine Aufgabe fehlschlägt, werden folgende Aufgaben im Ziel-Element und im Build fort, um auszuführen, und alle Fehler von der Aufgabe werden als Warnungen behandelt.

  • ErrorAndContinue. Wenn eine Aufgabe fehlschlägt, werden folgende Aufgaben im Target-Element und im Build fort, um auszuführen, und alle Fehler von der Aufgabe werden als Fehler behandelt.

  • ErrorAndStop oder false (Standard). Wenn eine Aufgabe fehlschlägt, werden die übrigen Aufgaben im Target-Element und im Build nicht ausgeführt, und das gesamte Target-Element und der Build wird angenommen fehlgeschlagen sein.

.NET Framework-Versionen vor 4,5 unterstützten nur die true und false-Werte.

Der Standardwert von ContinueOnError lautet ErrorAndStop. Wenn Sie das - Attribut auf festlegen ErrorAndStop, Ihnen das Verhalten nicht für jeden ausführen, das die Projektdatei.

So ignorieren Sie einen Fehler in einer Aufgabe

  • Verwenden Sie das ContinueOnError-Attribut der Aufgabe. Beispiel:

    <Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, dass das Ziel Build weiter ausgeführt wird und der Buildvorgang als erfolgreich abgeschlossen gilt, auch wenn die Aufgabe Delete fehlschlägt.

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

Siehe auch

Konzepte

MSBuild-Aufgaben

Weitere Ressourcen

MSBuild

Referenz zu MSBuild-Aufgaben