Görevlerdeki hataları yoksayma
Bazen bir derlemenin belirli görevlerdeki hatalara dayanıklı olmasını istersiniz. Kritik olmayan görevler başarısız olursa, gerekli çıkışı üretmeye devam ettiğinden derlemenin devam etmesi gerekir. Örneğin, bir proje her bileşen oluşturulduktan sonra e-posta iletisi göndermek için bir görev kullanıyorsa SendMail
, posta sunucuları kullanılamadığında ve durum iletileri gönderilemediğinde bile derlemenin tamamlanmasını kabul edilebilir olarak düşünebilirsiniz. Örneğin, ara dosyalar genellikle derleme sırasında silinirse, bu dosyalar silinemediğinde bile derlemenin tamamlanmasını kabul edilebilir olarak düşünebilirsiniz.
Burada açıklanan ve görevlere özgü yöntemlere ek olarak, MSBuild'in uyarıları yoksayma genel yollarından da yararlanabilirsiniz, örneğin özelliğini MSBuildWarningsAsMessages
kullanarak. Bkz. Ortak MSBuild proje özellikleri.
ContinueOnError özniteliğini kullanma
ContinueOnError
öğesinin özniteliği, bir görev hatası oluştuğunda derlemenin Task
durdurulup durdurulmayacağını veya devam edip etmeyeceğini denetler. Bu öznitelik, derleme devam ettiğinde hataların hata veya uyarı olarak ele alıp almayacağını da denetler.
ContinueOnError
özniteliği aşağıdaki değerlerden birini içerebilir:
WarnAndContinue veya true. Bir görev başarısız olduğunda, Hedef öğesindeki ve derlemedeki sonraki görevler yürütülmeye devam eder ve görevdeki tüm hatalar uyarı olarak değerlendirilir.
ErrorAndContinue. Bir görev başarısız olduğunda, öğesindeki ve derlemedeki
Target
sonraki görevler yürütülmeye devam edilir ve görevdeki tüm hatalar hata olarak değerlendirilir.ErrorAndStop veya false (varsayılan). Bir görev başarısız olduğunda, öğesindeki ve derlemedeki
Target
kalan görevler yürütülür ve öğenin tamamıTarget
ile derlemenin başarısız olduğu kabul edilir.
.NET Framework'ün 4.5 öncesi sürümleri yalnızca true
ve false
değerlerini desteklemektedir.
ContinueOnError
için varsayılan değer ErrorAndStop
değeridir. özniteliğini ErrorAndStop
olarak ayarlarsanız, davranışı proje dosyasını okuyan herkese açık hale getirirsiniz.
Görevdeki bir hatayı yoksaymak için
ContinueOnError
Görevin özniteliğini kullanın. Örneğin:
<Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>
Örnek
Aşağıdaki kod örneği, görev başarısız olsa bile hedefin Build
hala çalıştığını ve derlemenin Delete
başarılı olarak kabul edildiğini gösterir.
<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>