Поделиться через


Практическое руководство. Игнорирование ошибок в задачах

Иногда требуется, чтобы построение было отказоустойчивым в определенных задачах.В случае появления ошибки в таких некритических задачах построение можно продолжить, поскольку это не помешает получить требуемый результат.Например, если в проекте используется задача SendMail для отправки сообщения электронной почты после сборки каждого компонента, вы можете пожелать продолжить построение до полного завершения даже в том случае, если почтовые серверы оказываются недоступными и сообщения о состоянии отправить не удается.Или, например, если промежуточные файлы обычно удаляются во время построения, вы можете пожелать продолжить выполнение построения до полного завершения даже в том случае, если эти файлы удалить не удается.

Использование атрибута ContinueOnError

Атрибут ContinueOnError элемента Task определяет, следует ли остановить или продолжить построение в случае, если в задаче произошла ошибка.Этот атрибут также контролирует, обрабатываются ли ошибки в виде ошибки или предупреждения, когда построение продолжается.

Атрибут ContinueOnError может содержать одно из следующих значений:

  • WarnAndContinue или true.При сбое задачи, последующие задачи в элементе целевой объект и построении продолжают выполняться, и все ошибки из задачи рассматриваются как предупреждения.

  • ErrorAndContinue.При сбое задачи, последующие задачи в элементе Target и построении продолжают выполняться, и все ошибки из задачи следует обрабатывать как ошибки.

  • ErrorAndStop или false (по умолчанию).При сбое задачи, не исполнены остальные задачи в элементе Target и построении и считается, что не удалось весь элемент Target и построение.

Версии платформы .NET Framework до 4,5 поддерживали только значения true и false.

По умолчанию для атрибута ContinueOnError используется значение ErrorAndStop.Если атрибут на ErrorAndStop набор выполняется расширение функциональности явной к любому, которое считывает файл проекта.

Игнорирование ошибки в задаче

  • Используйте в задаче атрибут ContinueOnError.Например:

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

Пример

В приведенном ниже примере кода показано, что целевой объект Build по-прежнему выполняется и построение считается успешным, даже если в задаче Delete появляется ошибка.

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

См. также

Основные понятия

Задачи MSBuild

Другие ресурсы

MSBuild

Справочные сведения о задачах MSBuild