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.