Bagikan melalui


Format MSBuild dan Visual Studio untuk pesan diagnostik

Ketika alat dijalankan yang menghasilkan beberapa teks, MSBuild memeriksa teks untuk kesalahan dan peringatan. Banyak alat menggunakan format yang diketahui untuk melaporkan pesan ini. Secara default, MSBuild memeriksa teks dan melaporkan kesalahan dan/atau peringatan berdasarkan output. Perilaku ini dapat diubah atau dinonaktifkan dengan menggunakan parameter ini pada Exec tugas: IgnoreStandardErrorWarningFormat, CustomErrorRegularExpression, dan CustomWarningRegularExpression.

Catatan

Jika Anda memutuskan untuk menggunakan ekspresi reguler Anda sendiri untuk mendeteksi kesalahan dan peringatan, maka Anda harus tahu bahwa MSBuild akan melihat hasil satu baris pada satu waktu. Bahkan jika regex kustom Anda akan cocok dengan sesuatu di beberapa baris, regex kustom tidak akan berulah seperti itu karena bagaimana MSBuild memproses teks tersebut.

Lihat empat pesan berikut, yang semuanya diformat dengan benar dan akan dikenali oleh MSBuild dan Microsoft Visual Studio:

Main.cs(17,20): warning CS0168: The variable 'x' is declared but never used
C:\dir1\strings.resx(2) : error BC30188: Declaration expected.
cl : Command line warning D4024 : unrecognized source file type 'file1.cs', object . . .
error CS0006: Metadata file 'System.dll' could not be found.

Pesan-pesan ini sesuai dengan format lima bagian khusus yang ditunjukkan di sini. Urutan bagian-bagian ini penting dan tidak boleh berubah.

Origin: : SubcategoryCategoryCodeText

Contohnya,

c1 : Command line warning D4024 : unrecognized source file type 'test.xyz'

Origin: c1
Subcategory: Command line
Category: warning
Code: D4024
Text: unrecognized source file type 'test.zyz'

Masing-masing komponen format ini dijelaskan sebagai berikut:

  • Asal (Wajib) Asal bisa kosong. Jika ada, asalnya biasanya adalah nama alat, seperti cl dalam salah satu contoh. Tetapi bisa juga menjadi nama file, seperti "Main.cs," yang ditunjukkan dalam contoh lain. Jika itu adalah nama file, maka itu harus merupakan nama file absolut atau relatif, diikuti dengan informasi baris/kolom berkurung opsional dalam salah satu formulir berikut:

    (line) or (line-line) or (line-col) or (line,col-col) or (line,col,line,col)
    

    Baris dan kolom dimulai dari 1 dalam file; artinya, awal file adalah 1, dan kolom paling kiri adalah 1. Jika Asal adalah nama alat, maka itu tidak boleh berubah berdasarkan lokal; artinya, perlu lokal-netral.

  • Subkategori (Opsional) Subkategori digunakan untuk mengklasifikasikan kategori itu sendiri lebih lanjut; tidak boleh dilokalkan.

  • Kategori (Wajib) Harus berupa "kesalahan" atau "peringatan". Kasus tidak masalah. Seperti halnya asal, kategori tidak boleh dilokalkan.

  • Kode (Opsional) mengidentifikasi kode kesalahan/kode peringatan khusus aplikasi. Kode tidak boleh dilokalkan dan tidak boleh berisi spasi.

  • Teks Teks Ramah pengguna yang menjelaskan kesalahan, dan harus dilokalkan jika Anda melayani beberapa lokal.

Ketika MSBuild memanggil alat baris perintah (misalnya, csc.exe atau vbc.exe), MSBuild melihat output yang dipancarkan oleh alat ke aliran kesalahan standar keluar dan standar. Setiap baris yang cocok dengan format kesalahan yang baru saja saya jelaskan akan diperlakukan secara khusus; artinya, baris yang dikenali sebagai kesalahan atau peringatan akan diubah menjadi kesalahan build dan peringatan, masing-masing. Untuk melihat manfaat nyata dari ini, Anda harus membangun dari dalam alat pengembangan seperti Visual Studio atau VS Code. Karena MSBuild memperlakukan pesan-pesan ini secara khusus, pesan tersebut dicatat sebagai peringatan dan kesalahan kelas satu di daftar tugas Visual Studio. Jika Asal menentukan informasi baris/kolom, maka mengklik dua kali pesan akan membawa Anda ke sumber kesalahan dalam file yang menyinggung.