Tugas MSBuild
Platform build membutuhkan kemampuan untuk menjalankan sejumlah tindakan selama proses build. MSBuild menggunakan tugas untuk melakukan tindakan ini. Tugas adalah unit kode yang dapat dieksekusi yang digunakan oleh MSBuild untuk melakukan operasi build atomik.
Logika tugas
Format file proyek XML MSBuild tidak dapat sepenuhnya menjalankan operasi build sendiri, sehingga logika tugas harus diimplementasikan di luar file proyek.
Logika eksekusi tugas diimplementasikan sebagai kelas .NET yang mengimplementasikan antarmuka ITask, yang didefinisikan dalam namespace Microsoft.Build.Framework.
Kelas tugas juga menentukan parameter input dan output yang tersedia untuk tugas dalam file proyek. Semua properti non-abstrak non-statis yang dapat diatur publik yang diekspos oleh kelas tugas dapat diberikan nilai dalam file proyek dengan menempatkan atribut yang sesuai dengan nama yang sama pada elemen Tugas, dan mengatur nilainya seperti yang ditunjukkan dalam contoh nanti di artikel ini.
Anda dapat menulis tugas Anda sendiri dengan menulis kelas terkelola yang mengimplementasikan antarmuka ITask. Untuk informasi selengkapnya, lihat Penulisan tugas.
Menjalankan tugas dari file proyek
Sebelum menjalankan tugas dalam file proyek, Anda harus terlebih dahulu memetakan jenis dalam rakitan yang mengimplementasikan tugas ke nama tugas dengan elemen UsingTask. Ini memungkinkan MSBuild mengetahui di mana mencari logika eksekusi tugas Anda saat menemukannya di file proyek Anda.
Untuk menjalankan tugas dalam file proyek MSBuild, buat elemen dengan nama tugas sebagai anak dari elemen Target
. Jika tugas menerima parameter, ini diteruskan sebagai atribut elemen.
Daftar dan properti item MSBuild dapat digunakan sebagai parameter. Misalnya, kode berikut memanggil tugas MakeDir
dan mengatur nilai properti Directories
objek MakeDir
yang sama dengan nilai properti BuildDir
:
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
Tugas juga dapat mengembalikan informasi ke file proyek, yang dapat disimpan dalam item atau properti untuk digunakan nanti. Misalnya, kode berikut memanggil tugas Copy
dan menyimpan informasi dari properti CopiedFiles
output dalam daftar item SuccessfullyCopiedFiles
.
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
Tugas yang disertakan
MSBuild dikirim dengan banyak tugas seperti Salin, yang menyalin file, MakeDir, yang membuat direktori, dan Csc, yang mengkompilasi file kode sumber C#. Untuk daftar lengkap tugas dan informasi penggunaan yang tersedia, lihat Referensi tugas.
Tugas yang ditimpa
MSBuild mencari tugas di beberapa lokasi. Lokasi pertama ada di file dengan ekstensi .OverrideTasks
yang disimpan di direktori MSBuild. Tugas dalam file-file ini mengambil alih tugas lain dengan nama yang sama, termasuk tugas dalam file proyek. Lokasi kedua ada di file proyek dan impornya. Jika tugas tidak ditentukan dalam proyek, tugas tersebut akan dicari dalam tugas default MSBuild yang ditentukan dalam file .tasks
di direktori MSBuild.