Elemen target (MSBuild)
Berisi sekumpulan tugas untuk MSBuild guna dijalankan secara berurutan.
<Project><Target>
Sintaks
<Target Name="Target Name"
Inputs="Inputs"
Outputs="Outputs"
Returns="Returns"
KeepDuplicateOutputs="true/false"
BeforeTargets="Targets"
AfterTargets="Targets"
DependsOnTargets="DependentTarget"
Condition="'String A' == 'String B'"
Label="Label">
<Task>... </Task>
<PropertyGroup>... </PropertyGroup>
<ItemGroup>... </ItemGroup>
<OnError... />
</Target>
Atribut dan elemen
Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.
Atribut
Atribut | Deskripsi |
---|---|
Name |
Atribut yang diperlukan. Nama target. Nama target mungkin berisi karakter apa pun kecuali $@()%*?. . |
Condition |
Atribut opsional. Kondisi yang akan dievaluasi. Jika kondisi dievaluasi ke false , target tidak akan menjalankan isi target atau target apa pun yang diatur dalam DependsOnTargets atribut. Untuk informasi selengkapnya tentang kondisi, lihat Kondisi. |
Inputs |
Atribut opsional. File yang membentuk input ke dalam target ini. Beberapa file dipisahkan oleh titik koma. Stempel waktu file akan dibandingkan dengan stempel waktu file untuk Outputs menentukan apakah Target sudah diperbarui. Untuk informasi selengkapnya, lihat Build inkremental, Cara: Mem-build secara bertahap, dan Transformasi. |
Outputs |
Atribut opsional. File yang membentuk output ke dalam target ini. Beberapa file dipisahkan oleh titik koma. Stempel waktu file akan dibandingkan dengan stempel waktu file untuk Inputs menentukan apakah Target sudah diperbarui. Untuk informasi selengkapnya, lihat Build inkremental, Cara: Mem-build secara bertahap, dan Transformasi. |
Returns |
Atribut opsional. Kumpulan item yang akan tersedia untuk tugas yang memanggil target ini, misalnya, tugas MSBuild. Beberapa target dipisahkan oleh titik koma. Jika target dalam file tidak Returns memiliki atribut, atribut Output digunakan sebagai gantinya untuk tujuan ini. |
KeepDuplicateOutputs |
Atribut Boolean opsional. Jika true , beberapa referensi ke item yang sama dalam Pengembalian target direkam. Secara default, atribut ini adalah false . |
BeforeTargets |
Atribut opsional. Daftar nama target yang dipisahkan titik koma. Ketika ditentukan, menunjukkan bahwa target ini harus berjalan sebelum satu atau beberapa target yang ditentukan. Ini memungkinkan penulis proyek memperluas serangkaian target yang ada tanpa memodifikasinya secara langsung. Untuk informasi selengkapnya, lihat Urutan build target. |
AfterTargets |
Atribut opsional. Daftar nama target yang dipisahkan titik koma. Ketika ditentukan, menunjukkan bahwa target ini harus berjalan sebelum satu atau beberapa target yang ditentukan. Ini memungkinkan penulis proyek memperluas serangkaian target yang ada tanpa memodifikasinya secara langsung. Untuk informasi selengkapnya, lihat Urutan build target. |
DependsOnTargets |
Atribut opsional. Target yang harus dijalankan sebelum target ini dapat dijalankan atau analisis dependensi tingkat atas dapat terjadi. Beberapa target dipisahkan oleh titik koma. |
Label |
Atribut opsional. Pengidentifikasi yang dapat mengidentifikasi atau mengurutkan sistem dan elemen pengguna. |
Elemen anak
Elemen | Deskripsi |
---|---|
Tugas | Membuat dan menjalankan instans dari tugas MSBuild. Mungkin ada nol atau lebih tugas dalam target. |
PropertyGroup | Berisi serangkaian elemen Property yang ditentukan pengguna. Mulai di .NET Framework 3.5, suatu Target elemen mungkin berisi PropertyGroup beberapa elemen. |
ItemGroup | Berisi serangkaian elemen Item yang ditentukan pengguna. Mulai di .NET Framework 3.5, suatu Target elemen mungkin berisi ItemGroup beberapa elemen. Untuk informasi selengkapnya, lihat Item. |
OnError | Menyebabkan satu atau beberapa target dijalankan jika ContinueOnError atributnya adalah ErrorAndStop (atau false ) untuk tugas yang gagal. Mungkin ada nol atau beberapa OnError elemen dalam target. Jika OnError ada elemen, elemen tersebut harus menjadi elemen terakhir dalam Target elemen.Untuk informasi tentang ContinueOnError atribut, lihat Elemen tugas (MSBuild). |
Elemen induk
Elemen | Deskripsi |
---|---|
Project | Elemen akar yang diperlukan dari file proyek MSBuild. |
Keterangan
Target pertama yang dijalankan ditentukan pada durasi. Target dapat memiliki dependensi pada target lain. Misalnya, target untuk penyebaran bergantung pada target untuk kompilasi. Mesin MSBuild menjalankan dependensi dalam urutan munculnya dependensi tersebut di DependsOnTargets
atribut, dari kiri ke kanan. Untuk informasi selengkapnya, lihat Target.
MSBuild bergantung pada urutan impor, dan definisi terakhir dari target dengan atribut spesifik Name
adalah definisi yang digunakan.
Target hanya dijalankan sekali selama build, meski lebih dari satu target memiliki dependensi padanya.
Jika target dilewati karena atributnya Condition
dievaluasi ke false
, target masih dapat dijalankan jika dipanggil nanti dalam build dan atributnya Condition
dievaluasi pada true
saat itu.
Sebelum MSBuild 4, Target
mengembalikan item apa pun yang ditentukan dalam Outputs
atribut . Untuk melakukan ini, MSBuild harus merekam item ini jika nantinya tugas dalam build memintanya. Karena tidak ada cara untuk menunjukkan target mana yang memiliki output yang diperlukan pemanggil, MSBuild mengumpulkan semua item dari semua Outputs
yang dipanggil Target
. Hal ini menyebabkan masalah penskalaan untuk build yang memiliki sejumlah besar item output.
Jika pengguna menentukan Returns
pada elemen apa pun Target
dalam proyek, maka hanya yang Target
memiliki Returns
atribut yang merekam item tersebut.
Target
mungkin berisi Outputs
atribut dan Returns
atribut. Outputs
digunakan dengan Inputs
untuk menentukan apakah target sudah diperbarui. Returns
, jika ada, mengambil alih nilai Outputs
untuk menentukan item mana yang ditampilkan ke pemanggil. Jika Returns
tidak ada, maka Outputs
akan tersedia untuk pemanggil kecuali dalam kasus yang dijelaskan sebelumnya.
Sebelum MSBuild 4, setiap kali Target
menyertakan beberapa referensi ke item yang sama dalam Outputs
, item duplikat tersebut akan direkam. Dalam build yang sangat besar yang memiliki sejumlah besar output dan banyak interdependensi proyek, ini akan menyebabkan sejumlah besar memori terbuang sia-sia karena item duplikat tidak digunakan. KeepDuplicateOutputs
Ketika atribut diatur ke true
, duplikat ini direkam.
Contoh
Contoh kode berikut menunjukkan Target
elemen yang menjalankan Csc
tugas.
<Target Name="Compile" DependsOnTargets="Resources" Returns="$(TargetPath)">
<Csc Sources="@(CSFile)"
TargetType="library"
Resources="@(CompiledResources)"
EmitDebugInformation="$(includeDebugInformation)"
References="@(Reference)"
DebugType="$(debuggingType)" >
<Output TaskParameter="OutputAssembly"
ItemName="FinalAssemblyName" />
</Csc>
</Target>