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>