Bagikan melalui


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 untuk Remove atau Update 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.