Comment : ignorer des erreurs dans des tâches

Parfois, vous souhaitez qu'une génération tolère des erreurs dans certaines tâches.Si ces tâches non critiques échouent, vous voulez néanmoins que la génération se poursuive parce qu'elle peut encore produire la sortie requise.Par exemple, si un projet utilise une tâche SendMail pour envoyer un message électronique après avoir généré chaque composant, vous pouvez accepter que la génération continue jusqu'à la fin, même si les serveurs de messagerie ne sont pas disponibles et que les messages d'état ne peuvent pas être envoyés.Ou, par exemple, si les fichiers intermédiaires sont habituellement supprimés pendant la génération, vous pouvez accepter que la génération continue jusqu'à la fin, même si ces fichiers ne peuvent pas être supprimés.

Utilisation de l'attribut ContinueOnError

L'attribut ContinueOnError de l'élément Task vérifie si une génération s'arrête ou se poursuit en cas d'échec de tâche.Cet attribut contrôle également si des erreurs sont traitées comme des erreurs ou avertissements lorsque la génération continue.

l'attribut d' ContinueOnError peut contenir une des valeurs suivantes :

  • WarnAndContinue ou true.Lorsqu'une tâche échoue, les tâches suivantes dans l'élément de cible et la génération continue à exécuter, et toutes les erreurs de la tâche sont traitées comme avertissements.

  • ErrorAndContinue.Lorsqu'une tâche échoue, les tâches suivantes dans l'élément d' Target et la génération continue à exécuter, et toutes les erreurs de la tâche sont traitées comme des erreurs.

  • ErrorAndStop ou false (valeur par défaut).Lorsqu'une tâche échoue, les tâches restantes dans l'élément d' Target et la génération ne sont pas exécutées, et l'élément entier d' Target et la génération est considéré comme ayant échoué.

Les versions du .NET Framework avant 4,5 pris en charge uniquement les valeurs d' true et d' false .

La valeur par défaut de ContinueOnError est ErrorAndStop.Si vous affectez à l'attribut la ErrorAndStop, vous rendez le comportement explicite à toute personne qui lit le fichier projet.

Pour ignorer une erreur dans une tâche

  • Utilisez l'attribut ContinueOnError de la tâche.Par exemple :

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

Exemple

L'exemple de code suivant montre que la cible Build continue de s'exécuter et que la génération est considérée comme un succès, même si la tâche Delete échoue.

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

Voir aussi

Concepts

Tâches MSBuild

Autres ressources

MSBuild

Référence des tâches MSBuild