Udostępnij za pośrednictwem


Ignorowanie błędów w zadaniach

Czasami kompilacja ma być odporna na błędy w niektórych zadaniach. Jeśli te zadania niekrytyczne kończą się niepowodzeniem, chcesz kontynuować kompilację, ponieważ nadal może wygenerować wymagane dane wyjściowe. Jeśli na przykład projekt używa SendMail zadania do wysyłania wiadomości e-mail po skompilowanym składniku, możesz rozważyć jego zaakceptowanie, aby kontynuować uzupełnianie nawet wtedy, gdy serwery poczty są niedostępne i nie można wysłać wiadomości o stanie. Jeśli na przykład pliki pośrednie są zwykle usuwane podczas kompilacji, możesz rozważyć, że kompilacja będzie mogła kontynuować uzupełnianie nawet wtedy, gdy nie można usunąć tych plików.

Oprócz metod opisanych tutaj, które są specyficzne dla zadań, można również użyć ogólnych sposobów ignorowania ostrzeżeń programu MSBuild, na przykład przy użyciu właściwości MSBuildWarningsAsMessages. Zobacz Typowe właściwości projektu MSBuild.

Używanie atrybutu ContinueOnError

Atrybut ContinueOnError Task elementu określa, czy kompilacja zatrzymuje się lub kontynuuje, gdy wystąpi awaria zadania. Ten atrybut określa również, czy błędy są traktowane jako błędy lub ostrzeżenia, gdy kompilacja będzie kontynuowana.

Atrybut ContinueOnError może zawierać jedną z następujących wartości:

  • WarnAndContinue lub true. Gdy zadanie zakończy się niepowodzeniem, kolejne zadania w elemecie Target i kompilacja będą nadal wykonywane, a wszystkie błędy z zadania są traktowane jako ostrzeżenia.

  • ErrorAndContinue. Gdy zadanie zakończy się niepowodzeniem, kolejne zadania w elemecie Target i kompilacji będą nadal wykonywane, a wszystkie błędy z zadania są traktowane jako błędy.

  • ErrorAndStop lub false (wartość domyślna). Gdy zadanie zakończy się niepowodzeniem, pozostałe zadania w elemecie Target i kompilacji nie są wykonywane, a cały Target element i kompilacja są uznawane za nieudane.

Wersje programu .NET Framework przed wersją 4.5 obsługiwały tylko true wartości i false .

Wartość domyślna ContinueOnError to ErrorAndStop. Jeśli ustawisz atrybut na ErrorAndStop, zachowanie będzie jawne dla każdego, kto odczytuje plik projektu.

Aby zignorować błąd w zadaniu

ContinueOnError Użyj atrybutu zadania. Na przykład:

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

Przykład

Poniższy przykład kodu ilustruje, że Build element docelowy nadal działa, a kompilacja jest uznawana za sukces, nawet jeśli Delete zadanie zakończy się niepowodzeniem.

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