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.

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