Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Membangun proyek MSBuild dari proyek MSBuild lain.
Parameter-parameternya
Tabel berikut ini menjelaskan parameter tugas MSBuild.
| Pengaturan | Deskripsi |
|---|---|
BuildInParallel |
Parameter Boolean opsional.Jika true, proyek yang ditentukan dalam parameter Projects dibangun secara paralel jika memungkinkan. Defaultnya adalah false. |
Projects |
Parameter ITaskItem[] yang diperlukan.Menentukan file proyek yang akan dibangun. |
Properties |
Parameter String opsional.Daftar pasangan nama/nilai properti yang dibatasi titik koma untuk diterapkan sebagai properti global ke proyek turunan. Saat Anda menentukan parameter ini, secara fungsional setara dengan mengatur properti yang memiliki properti saat Anda membangun dengan MSBuild.exe. Contohnya: Properties="Configuration=Debug;Optimize=$(Optimize)"Saat Anda meneruskan properti ke proyek melalui parameter Properties, MSBuild mungkin membuat instans baru proyek bahkan jika file proyek telah dimuat. MSBuild membuat satu instans proyek untuk jalur proyek tertentu dan serangkaian properti global yang unik. Misalnya, perilaku ini memungkinkan Anda membuat beberapa tugas MSBuild yang memanggil myproject.proj, dengan Configuration=Release dan Anda mendapatkan satu instans myproject.proj (jika tidak ada properti unik yang ditentukan dalam tugas). Jika Anda menentukan properti yang belum dilihat oleh MSBuild, MSBuild membuat instans baru proyek, yang dapat dibangun secara paralel dengan instans proyek lainnya. Misalnya, konfigurasi Rilis dapat dibangun secara bersamaan dengan konfigurasi Debug. |
RebaseOutputs |
Parameter Boolean opsional.Jika true, jalur relatif item output target dari proyek yang dibuat memiliki jalur yang disesuaikan agar relatif terhadap proyek panggilan. Defaultnya adalah false. |
RemoveProperties |
Parameter String opsional.Menentukan kumpulan properti global yang akan dihapus. |
RunEachTargetSeparately |
Parameter Boolean opsional.Jika true, tugas MSBuild memanggil setiap target dalam daftar yang diteruskan ke MSBuild satu per satu, alih-alih pada saat yang sama. Mengatur parameter ini ke true menjamin bahwa target berikutnya dipanggil bahkan jika target yang dipanggil sebelumnya gagal. Jika tidak, kesalahan build akan menghentikan pemanggilan semua target berikutnya. Defaultnya adalah false. |
SkipNonexistentProjects |
Parameter Boolean opsional.Jika true, file proyek yang tidak ada pada disk dilewati. Jika tidak, proyek tersebut akan menyebabkan kesalahan. Secara otomatis beralih ke false. |
SkipNonexistentTargets |
Parameter Boolean opsional.Jika true, file proyek yang ada tetapi tidak berisi Targets bernama dilewati. Jika tidak, proyek tersebut akan menyebabkan kesalahan. Secara otomatis beralih ke false. Diperkenalkan dalam MSBuild 15.5. |
StopOnFirstFailure |
Parameter Boolean opsional.Jika true, ketika salah satu proyek gagal dibangun, tidak ada lagi proyek yang dibangun. Saat ini opsi ini tidak didukung saat membangun secara paralel (dengan beberapa prosesor). |
TargetAndPropertyListSeparators |
Parameter String[] opsional.Menentukan daftar target dan properti sebagai metadata item Project). Pemisah tidak dilewati sebelum diproses. Misalnya, %3B (escaped ';') diperlakukan seolah-olah itu adalah unescaped ';'. |
TargetOutputs |
Parameter output baca-saja ITaskItem[] opsional.Mengembalikan output target bawaan dari semua file proyek. Hanya output dari target yang ditentukan yang dikembalikan, bukan output apa pun yang mungkin ada pada target yang diandalkan target tersebut. Parameter TargetOutputs juga berisi metadata berikut:- MSBuildSourceProjectFile: File proyek MSBuild yang berisi target yang mengatur output.- MSBuildSourceTargetName: Target yang menetapkan output.
Catatan: Jika Anda ingin mengidentifikasi output dari setiap file atau target proyek secara terpisah, jalankan tugas MSBuild secara terpisah untuk setiap file atau target proyek. Jika Anda menjalankan tugas MSBuild hanya sekali untuk membangun semua file proyek, output dari semua target dikumpulkan menjadi satu array. |
Targets |
Parameter String opsional.Menentukan target atau target yang akan dibangun dalam file proyek. Gunakan titik koma untuk memisahkan daftar nama target. Jika tidak ada target yang ditentukan dalam tugas MSBuild, target default yang ditentukan dalam file proyek dibuat.
Catatan: Target harus terjadi di semua file proyek. Jika tidak, kesalahan build terjadi. |
ToolsVersion |
Parameter String opsional.Menentukan ToolsVersion yang akan digunakan saat membangun proyek yang diteruskan ke tugas ini.Memungkinkan tugas MSBuild untuk membangun proyek yang menargetkan versi .NET Framework yang berbeda dari yang ditentukan dalam proyek. Nilai yang valid adalah 2.0, 3.0, dan 3.5. Nilai defaultnya adalah 3.5. |
Komentar
Selain parameter yang tercantum sebelumnya, tugas ini mewarisi parameter dari kelas TaskExtension, yang diwarisi sendiri dari kelas Task. Untuk daftar parameter tambahan ini dan deskripsinya, lihat kelas dasar TaskExtension.
Tidak seperti menggunakan tugas Exec untuk memulai MSBuild.exe, tugas ini menggunakan proses MSBuild yang sama untuk membangun proyek anak. Daftar target yang sudah dibuat yang dapat dilewati dibagikan antara build induk dan anak. Tugas ini juga lebih cepat karena tidak ada proses MSBuild baru yang dibuat.
Tugas ini tidak hanya dapat memproses file proyek tetapi juga file solusi. Dalam MSBuild 17.12 dan yang lebih baru, format file solusi .slnx dan .sln diterima.
Konfigurasi apa pun yang diperlukan oleh MSBuild untuk memungkinkan proyek dibangun pada saat yang sama, bahkan jika konfigurasi melibatkan infrastruktur jarak jauh (misalnya, port, protokol, waktu habis, percobaan ulang, dan sebagainya), harus dibuat dapat dikonfigurasi dengan menggunakan file konfigurasi. Jika memungkinkan, item konfigurasi harus dapat ditentukan sebagai parameter tugas pada tugas MSBuild.
Dimulai di MSBuild 3.5, proyek Solusi sekarang memunculkan TargetOutputs dari semua subproyek yang dibangunnya.
Meneruskan properti ke proyek
Dalam versi MSBuild sebelum MSBuild 3.5, meneruskan serangkaian properti yang berbeda ke proyek yang berbeda yang tercantum dalam item MSBuild sangat menantang. Jika Anda menggunakan atribut Properti dari tugas MSBuild, maka pengaturannya diterapkan ke semua proyek yang sedang dibangun kecuali Anda membuat batch tugas MSBuild dan secara kondisional menyediakan properti yang berbeda untuk setiap proyek dalam daftar item.
MSBuild 3.5, namun, menyediakan dua item metadata cadangan baru, Properti dan AdditionalProperties, yang memberi Anda cara fleksibel untuk melewati properti yang berbeda untuk proyek yang berbeda yang dibangun menggunakan tugas MSBuild .
Nota
Item metadata baru ini hanya berlaku untuk item yang diteruskan dalam atribut Projects dari tugas MSBuild.
Manfaat build multi-prosesor
Salah satu manfaat utama penggunaan metadata baru ini terjadi saat Anda membangun proyek secara paralel pada sistem multi-prosesor. Metadata memungkinkan Anda mengonsolidasikan semua proyek ke dalam satu tugas MSBuild panggilan tanpa harus melakukan tugas MSBuild batching atau kondisional. Dan ketika Anda hanya memanggil satu tugas MSBuild, semua proyek yang tercantum dalam atribut Projects dibangun secara paralel. (Namun, hanya jika atribut BuildInParallel=true ada dalam tugas MSBuild.) Untuk informasi selengkapnya, lihat Membangun beberapa proyek secara paralel.
Metadata properti
Ketika ditentukan, metadata Properti mengambil alih parameter Properti tugas, sementara AdditionalProperties metadata ditambahkan ke definisi parameter.
Skenario umum adalah ketika Anda membangun beberapa file solusi menggunakan tugas MSBuild, hanya menggunakan konfigurasi build yang berbeda. Anda mungkin ingin membangun solusi a1 menggunakan konfigurasi Debug dan solusi a2 menggunakan konfigurasi Rilis. Di MSBuild 2.0, file proyek ini akan terlihat seperti berikut ini:
Nota
Dalam contoh berikut, "..." mewakili file solusi tambahan.
a.proj
<Project>
<Target Name="Build">
<MSBuild Projects="a1.sln..." Properties="Configuration=Debug"/>
<MSBuild Projects="a2.sln" Properties="Configuration=Release"/>
</Target>
</Project>
Namun, dengan menggunakan metadata Properti, Anda dapat menyederhanakan kode ini untuk menggunakan satu tugas MSBuild, seperti yang ditunjukkan oleh contoh berikut:
a.proj
<Project>
<ItemGroup>
<ProjectToBuild Include="a1.sln...">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
<ProjectToBuild Include="a2.sln">
<Properties>Configuration=Release</Properties>
</ProjectToBuild>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"/>
</Target>
</Project>
- atau -
<Project>
<ItemGroup>
<ProjectToBuild Include="a1.sln..."/>
<ProjectToBuild Include="a2.sln">
<Properties>Configuration=Release</Properties>
</ProjectToBuild>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"
Properties="Configuration=Debug"/>
</Target>
</Project>
Metadata AdditionalProperties
Pertimbangkan skenario berikut di mana Anda membangun dua file solusi menggunakan tugas MSBuild, keduanya menggunakan konfigurasi Rilis, tetapi satu menggunakan arsitektur x86 dan yang lain menggunakan arsitektur ia64. Di MSBuild 2.0, Anda harus membuat beberapa instans tugas MSBuild: satu untuk membangun proyek menggunakan konfigurasi Rilis dengan Arsitektur x86, yang lain menggunakan konfigurasi Rilis dengan arsitektur ia64. File proyek Anda akan terlihat seperti berikut ini:
a.proj
<Project>
<Target Name="Build">
<MSBuild Projects="a1.sln..." Properties="Configuration=Release;
Architecture=x86"/>
<MSBuild Projects="a2.sln" Properties="Configuration=Release;
Architecture=ia64"/>
</Target>
</Project>
Dengan menggunakan metadata AdditionalProperties, Anda dapat menyederhanakan ini untuk menggunakan satu tugas MSBuild dengan menggunakan yang berikut ini:
a.proj
<Project>
<ItemGroup>
<ProjectToBuild Include="a1.sln...">
<AdditionalProperties>Architecture=x86
</AdditionalProperties>
</ProjectToBuild>
<ProjectToBuild Include="a2.sln">
<AdditionalProperties>Architecture=ia64
</AdditionalProperties>
</ProjectToBuild>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"
Properties="Configuration=Release"/>
</Target>
</Project>
Contoh
Contoh berikut menggunakan tugas MSBuild untuk membangun proyek yang ditentukan oleh kumpulan item ProjectReferences. Output target yang dihasilkan disimpan dalam kumpulan item AssembliesBuiltByChildProjects.
<Project>
<ItemGroup>
<ProjectReferences Include="*.*proj" />
</ItemGroup>
<Target Name="BuildOtherProjects">
<MSBuild
Projects="@(ProjectReferences)"
Targets="Build">
<Output
TaskParameter="TargetOutputs"
ItemName="AssembliesBuiltByChildProjects" />
</MSBuild>
</Target>
</Project>