Porady: ignorowanie błędów w zadaniach
Czasami chcesz zbudować być odporne na błędy w niektórych zadań.Te zadania niekrytyczne nie powiedzie się, czy budować, aby kontynuować, ponieważ nadal może produkować wymagane dane wyjściowe.Na przykład, jeżeli projekt używa SendMail zadanie, aby wysłać wiadomość e-mail po zbudowaniu każdego składnika można rozważyć jej przyjęcia dla kompilacji przejść do zakończenia, nawet wtedy, gdy serwery poczty są niedostępne i nie można wysyłać komunikaty o stanie.Lub, na przykład, jeśli pliki pośrednich są zwykle usuwane podczas budowy, warto go do przyjęcia dla kompilacji przejść do zakończenia, nawet w przypadku, gdy nie można usunąć te pliki.
Za pomocą atrybutu ContinueOnError
ContinueOnError Atrybut Task element kontroluje, czy kompilacji jest zatrzymywana czy kontynuowana po wystąpieniu awarii zadania.Ten atrybut kontroluje również, czy błędy są traktowane jako błędy lub ostrzeżenia, gdy trwa kompilowanie.
ContinueOnError Atrybut może zawierać jedną z następujących wartości:
WarnAndContinue lub true.Kiedy zadanie nie powiedzie się, kolejne zadania w Cel element i budować nadal wykonać, a wszystkie błędy z zadania są traktowane jako ostrzeżenia.
ErrorAndContinue.Kiedy zadanie nie powiedzie się, kolejne zadania w Target element i budować nadal wykonać, a wszystkie błędy z zadania są traktowane jako błędy.
ErrorAndStop lub false (domyślnie).Kiedy zadanie zakończy się niepowodzeniem, pozostałe zadania w Target element i budować nie są wykonywane i całą Target element i budować uznaje się za nie powiodło się.
Wersje.NET Framework przed 4.5, obsługiwany tylko przez true i false wartości.
Domyślna wartość ContinueOnError jest ErrorAndStop.Jeśli atrybut zostanie ustawiony na ErrorAndStop, aby zachowanie jawne każdy, kto czyta plik projektu.
Aby zignorować błąd w zadaniu
Użycie ContinueOnError atrybut zadania.Na przykład:
<Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>
Przykład
Poniższy przykład kodu pokazuje, że Build miejsce docelowe nadal działa, i zbudować uznaje się za sukces, nawet jeśli Delete zadanie kończy się niepowodzeniem.
<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>