Ignorování chyb v úlohách

Někdy chcete, aby sestavení bylo odolné proti chybám v určitých úlohách. Pokud tyto nekritické úlohy selžou, chcete, aby sestavení pokračovalo, protože může přesto vytvořit požadovaný výstup. Pokud například projekt používá SendMail úlohu k odeslání e-mailové zprávy po sestavení každé součásti, může být přijatelné, aby sestavení pokračovalo v dokončení i v případě, že poštovní servery nejsou k dispozici a stavové zprávy nelze odeslat. Pokud jsou například během sestavení obvykle odstraněny zprostředkující soubory, může být přijatelné, aby sestavení pokračovalo v dokončení i v případě, že tyto soubory nelze odstranit.

Kromě zde popsaných metod, které jsou specifické pro úlohy, můžete také použít obecné způsoby msBuild ignorovat upozornění, například pomocí vlastnosti MSBuildWarningsAsMessages. Viz Běžné vlastnosti projektu MSBuild.

Použití atributu ContinueOnError

Atribut ContinueOnError elementu Task určuje, zda sestavení zastaví nebo pokračuje v případě selhání úlohy. Tento atribut také řídí, jestli se chyby považují za chyby nebo upozornění při pokračování sestavení.

Atribut ContinueOnError může obsahovat jednu z následujících hodnot:

  • WarnAndContinue nebo true. Pokud úloha selže, následné úkoly v cílovém prvku a sestavení budou pokračovat v provádění a všechny chyby z úkolu se považují za upozornění.

  • ErrorAndContinue. Pokud úloha selže, následné úkoly v elementu Target a sestavení budou pokračovat v provádění a všechny chyby z úkolu se považují za chyby.

  • ErrorAndStop nebo false (výchozí). Pokud úloha selže, zbývající úkoly v elementu Target a sestavení se nespustí a celý Target prvek a sestavení se považuje za neúspěšné.

Verze rozhraní .NET Framework před verzí 4.5 podporovaly true pouze hodnoty a false hodnoty.

Výchozí hodnota atributu ContinueOnError je ErrorAndStop. Pokud nastavíte atribut na ErrorAndStop, nastavíte chování explicitní pro každého, kdo přečte soubor projektu.

Ignorování chyby v úkolu

ContinueOnError Použijte atribut úkolu. Příklad:

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

Příklad

Následující příklad kódu ukazuje, že Build cíl stále běží a sestavení je považováno za úspěch, i když Delete úloha selže.

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