MSBuild .props dan .targets dalam paket
Selain rakitan yang lebih tradisional, paket NuGet terkadang dapat menambahkan target atau properti build kustom ke proyek yang menggunakan paket tersebut.
Ini dapat dicapai dengan menambahkan file MSBuild yang valid, dalam bentuk <package_id>.targets
atau <package_id>.props
(seperti Contoso.Utility.UsefulStuff.targets
) dalam folder build proyek.
Membangun folder
Karena NuGet telah berevolusi, berbagai folder berbeda untuk build .props
dan .targets
telah ditambahkan.
Folder | Versi NuGet | Menggunakan |
---|---|---|
build | 2.5+ | Membangun logika untuk setiap kerangka kerja proyek. |
buildMultiTargeting | 4.0+ | Buat logika untuk outer build proyek yang menargetkan beberapa kerangka kerja. PackageReference saja. |
buildTransitive | 5.0+ | Buat logika untuk aset yang mengalir secara transitif ke proyek apa pun yang mengkonsumsi. Lihat halaman fitur. PackageReference saja. |
Folder build khusus kerangka kerja
Semua 3 folder build mengikuti pola yang sama untuk memutuskan file yang paling cocok berdasarkan kerangka kerja target proyek.
File di folder build akar, build/<package_id>.targets
dan build/<package_id>.props
dianggap cocok untuk semua kerangka kerja target.
Untuk menyediakan file khusus kerangka kerja, pertama-tama letakkan dalam subfolder yang sesuai, seperti berikut ini:
\build
\netstandard1.4
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
\net462
\Contoso.Utility.UsefulStuff.props
\Contoso.Utility.UsefulStuff.targets
Lebih suka menggunakan folder build khusus kerangka kerja kapan pun sesuai untuk menghindari penginstalan positif palsu dalam proyek yang mungkin tidak didukung oleh paket Anda.
Perhatikan bahwa jika paket tidak memiliki file apa pun di lib
folder atau ref
dan hanya file di bawah folder build khusus kerangka kerja, paket tersebut akan dianggap kompatibel dengan semua proyek. Versi terbaru alat paket, tingkatkan peringatan NU5127 saat paket tersebut dibuat.
Proyek yang menggunakan paket dengan file build
Proyek PackageReference
.props
dan .targets
tidak ditambahkan ke file proyek tetapi sebaliknya tersedia melalui {projectName}.nuget.g.targets
dan {projectName}.nuget.g.props
. File-file ini secara otomatis dihasilkan ketika pemulihan dijalankan.
Ketika proyek menargetkan lebih dari satu kerangka kerja, impor ke file-file ini dikondisikan pada nama kerangka kerja target.
MSBuild .props
dan .targets
file untuk penargetan multi-kerangka kerja dapat ditempatkan di \buildMultiTargeting
folder .
Ketika impor dihasilkan, kondisi bahwa properti $(TargetFramework)
MSBuild kosong diatur.
proyek packages.config
Ketika NuGet menginstal paket dengan \build
file, NuGet menambahkan elemen MSBuild <Import>
dalam file proyek yang menunjuk ke .targets
file dan .props
. (.props
ditambahkan di bagian atas file proyek; .targets
ditambahkan di bagian bawah.) Elemen MSBuild <Import>
kondisi terpisah ditambahkan untuk setiap kerangka kerja target.
Paket penulisan dengan alat peraga dan target MSBuild
Anda dapat menggunakan salah satu alat berikut untuk menyertakan MSBuild .props
dan .targets
dalam paket Anda.
Panduan untuk konten alat peraga dan target MSBuild
NuGet tidak membatasi bagaimana Anda menulis .props
dan .targets
karena mereka akan bervariasi berdasarkan kebutuhan pembuat paket dan proyek target itu sendiri.
Ada beberapa hal yang tidak boleh dilakukan dalam paket dan .props
.targets
, seperti tidak menentukan properti dan item yang memengaruhi pemulihan, karena akan dikecualikan secara otomatis.
Beberapa contoh properti yang tidak boleh ditambahkan atau diperbarui: TargetFramework, TargetFrameworkMoniker, TargetPlatformMoniker, AssetTargetFallback dll.
Beberapa contoh item yang tidak boleh ditambahkan atau diperbarui: PackageReference, PackageVersion, PackageDownload, dll.