Bagikan melalui


Mengabaikan kesalahan dalam tugas

Terkadang Anda ingin build tahan terhadap kesalahan dalam tugas tertentu. Jika tugas non-kritis tersebut gagal, Anda ingin build itu dilanjutkan karena masih dapat menghasilkan output yang diperlukan. Misalnya, jika proyek menggunakan tugas SendMail untuk mengirim pesan email setelah setiap komponen dibuat, Anda mungkin menganggap build dapat dilanjutkan ke penyelesaian bahkan ketika server email tidak tersedia dan pesan status tidak dapat dikirim. Atau, misalnya, jika file perantara biasanya dihapus selama build, mungkin Anda menganggap build itu dapat melanjutkan penyelesaian bahkan ketika file tersebut tidak dapat dihapus.

Selain metode yang dijelaskan di sini yang khusus untuk tugas, Anda juga dapat menggunakan cara umum MSBuild untuk mengabaikan peringatan, misalnya, dengan menggunakan properti MSBuildWarningsAsMessages. Lihat Properti proyek MSBuild umum.

Menggunakan atribut ContinueOnError

Atribut ContinueOnError pada elemen Task mengontrol apakah build berhenti atau berlanjut saat terjadi kegagalan tugas. Saat build berlanjut, atribut ini juga mengontrol apakah kesalahan diperlakukan sebagai kesalahan atau peringatan.

Atribut ContinueOnError dapat berisi salah satu nilai berikut:

  • WarnAndContinue atau true. Ketika tugas gagal, tugas berikutnya dalam elemen Target dan build terus dijalankan, dan semua kesalahan dari tugas diperlakukan sebagai peringatan.

  • ErrorAndContinue. Ketika tugas gagal, tugas berikutnya dalam elemen Target dan build terus dijalankan, dan semua kesalahan dari tugas tersebut dianggap sebagai peringatan.

  • ErrorAndStop atau salah (default). Ketika tugas gagal, tugas yang tersisa dalam elemen Target dan build tidak berjalan, dan seluruh elemen Target dan buildnya dianggap gagal.

Versi .NET Framework sebelum 4.5 hanya mendukung nilai true dan false.

Nilai default ContinueOnError adalah ErrorAndStop. Jika atribut diatur ke ErrorAndStop, Anda membuat perilaku tersebut menjadi eksplisit kepada siapa pun yang membaca file proyeknya.

Untuk mengabaikan kesalahan dalam tugas

Gunakan atribut ContinueOnError tugas. Contohnya:

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

Contoh

Contoh kode berikut menggambarkan bahwa target Build masih berjalan dan build dianggap berhasil, meskipun tugas Delete gagal.

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