Menyesuaikan build Anda
Proyek MSBuild yang menggunakan proses build standar (mengimpor Microsoft.Common.props dan Microsoft.Common.targets) memiliki beberapa kait ekstensibilitas yang dapat Anda gunakan untuk menyesuaikan proses build Anda.
Banyak operasi build yang dapat disesuaikan dikontrol oleh properti. Penting untuk mengetahui bagaimana dan di mana mengatur nilai properti agar memiliki efek yang diinginkan. Anda dapat mengatur properti pada baris perintah (dan dalam file respons), dalam file khusus seperti Directory.Build.props, dalam file yang diimpor, atau dalam file proyek. Penting untuk mengetahui di mana properti digunakan, diatur, atau diubah dan urutan file yang diimpor, termasuk impor implisit dari SDK seperti .NET SDK.
Untuk daftar properti, lihat Properti umum MSBuild.
Menjelajahi opsi kustomisasi
Opsi penyesuaian berikut tercantum dalam rangka meningkatkan kompleksitas dan cakupan pengaruh. Sebaiknya gunakan opsi kustomisasi paling tidak kompleks yang melayani tujuan Anda, mulai dari bagian atas daftar ini.
Opsi kustomisasi | Deskripsi |
---|---|
Menambahkan argumen ke baris perintah MSBuild | Atur properti global yang memengaruhi build dan build proyek utama dari semua proyek dependen. |
Mengkustomisasi build untuk satu proyek | Tambahkan properti ke .props atau .targets file untuk menyesuaikan pengaturan build. |
Menangani file yang dihasilkan dalam proses build | Cara memastikan file yang Anda hasilkan disertakan dengan benar output build. |
Menyesuaikan build untuk satu atau beberapa proyek | Tambahkan properti ke Directory.Build.props atau tambahkan properti dan target ke Directory.Build.targets untuk menyesuaikan build untuk semua proyek di bawah folder. Teknik ini berguna untuk mengatur properti yang diatur atau digunakan oleh SDK, serta penyesuaian cakupan sehingga memengaruhi semua proyek dalam folder atau subfolder. |
Mengkustomisasi build lokal Anda | Buat perubahan pada build hanya di komputer lokal Anda tanpa memengaruhi file sumber bersama. |
Mengkustomisasi semua build .NET | Sesuaikan build dengan cakupan di seluruh sistem, untuk build .NET. |
Menyesuaikan build C++ | Sesuaikan build C++, terlingkup ke proyek, solusi, folder, atau semua build yang diatur oleh penginstalan MSBuild pada sistem. |
Menambahkan argumen ke pemanggilan MSBuild baris perintah untuk proyek Anda
Anda dapat mengatur properti global pada baris perintah. Properti global memengaruhi semua build proyek, termasuk dependensi. Ingat bahwa membangun proyek secara otomatis memicu kemungkinan build untuk semua dependensi proyek. Perilaku normal MSBuild adalah membangun proyek dependen apa pun yang kedaluarsa. Build proyek dependen tersebut diluncurkan dengan pengaturan properti global yang sama dari baris perintah sebagai proyek asli.
File Directory.Build.rsp di atau di atas direktori sumber Anda diterapkan ke build baris perintah proyek Anda. Untuk detailnya, lihat File respons MSBuild.
Pilih antara menambahkan properti ke .props
file atau .targets
MSBuild bergantung pada urutan impor dan definisi terakhir dari properti (atau UsingTask
atau target) adalah definisi yang digunakan.
Saat menggunakan impor eksplisit, Anda dapat mengimpor dari .props
file atau .targets
kapan saja. Berikut adalah konvensi yang banyak digunakan:
.props
file diimpor lebih awal dalam pesanan impor..targets
file diimpor terlambat dalam urutan build.
Konvensi ini diberlakukan oleh impor <Project Sdk="SdkName">
(yaitu, impor Sdk.props adalah yang pertama, sebelum semua konten file, lalu Sdk.targets adalah yang terakhir, setelah semua konten file).
Saat memutuskan tempat meletakkan properti, gunakan panduan umum berikut:
Untuk banyak properti, tidak masalah di mana properti didefinisikan, karena tidak ditimpa dan hanya dibaca pada waktu eksekusi.
Untuk perilaku yang mungkin disesuaikan dalam proyek individual, atur default dalam
.props
file.Hindari mengatur properti dependen dalam
.props
file dengan membaca nilai properti yang mungkin disesuaikan, karena penyesuaian tidak terjadi sampai MSBuild membaca proyek pengguna.Atur properti dependen dalam
.targets
file, karena mereka mengambil kustomisasi dari proyek individual.Jika Anda perlu mengambil alih properti, lakukan dalam
.targets
file, setelah semua penyesuaian proyek pengguna memiliki kesempatan untuk diterapkan. Berhati-hatilah saat menggunakan properti turunan; properti turunan mungkin juga perlu ditimpa.Sertakan item dalam
.props
file (bersyukur pada properti). Semua properti dipertimbangkan sebelum item apa pun, sehingga kustomisasi properti proyek pengguna diambil, dan memiliki item yang diimpor dalam.props
file memberi proyek pengguna kesempatan untukRemove
atauUpdate
item apa pun yang dibawa oleh impor.Tentukan target dalam
.targets
file. Namun, jika file diimpor.targets
oleh SDK, ingatlah bahwa skenario ini membuat penimpaan target lebih sulit karena proyek pengguna tidak memiliki tempat untuk menimpanya secara default.Jika memungkinkan, menyesuaikan properti pada waktu evaluasi lebih disukai daripada mengubah properti di dalam target. Pedoman ini memudahkan untuk memuat proyek dan memahami apa yang dilakukannya.