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.