Mendukung beberapa versi .NET Framework dalam file proyek Anda
Ketika Anda pertama kali membuat proyek, kami sarankan Anda membuat pustaka kelas .NET Standard, karena memberikan kompatibilitas dengan berbagai proyek yang paling luas mengonsumsi. Dengan menggunakan .NET Standard, Anda menambahkan dukungan lintas platform ke pustaka .NET secara default. Namun, dalam beberapa skenario, Anda mungkin juga perlu menyertakan kode yang menargetkan kerangka kerja tertentu. Artikel ini memperlihatkan kepada Anda cara melakukannya untuk proyek bergaya SDK.
Untuk proyek gaya SDK, Anda dapat mengonfigurasi dukungan untuk beberapa kerangka kerja target (TFM) dalam file proyek Anda, lalu menggunakan dotnet pack
atau msbuild /t:pack
untuk membuat paket.
Catatan
nuget.exe CLI tidak mendukung pengemasan proyek gaya SDK, jadi Anda hanya boleh menggunakan dotnet pack
atau msbuild /t:pack
. Kami menyarankan agar Anda menyertakan semua properti yang biasanya ada dalam .nuspec
file dalam file proyek sebagai gantinya. Untuk menargetkan beberapa versi .NET Framework dalam proyek gaya non-SDK, lihat Mendukung beberapa versi .NET Framework.
Membuat proyek yang mendukung beberapa versi .NET Framework
Buat pustaka kelas .NET Standard baru baik di Visual Studio atau gunakan
dotnet new classlib
.Kami menyarankan agar Anda membuat pustaka kelas .NET Standard untuk kompatibilitas terbaik.
Edit file .csproj untuk mendukung kerangka kerja target. Misalnya, ubah
<TargetFramework>netstandard2.0</TargetFramework>
untuk:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
Pastikan Anda mengubah elemen XML yang diubah dari tunggal ke jamak (tambahkan "s" ke tag terbuka dan tutup).
Jika Anda memiliki kode yang hanya berfungsi dalam satu TFM, Anda dapat menggunakan
#if NET45
atau#if NETSTANDARD2_0
untuk memisahkan kode yang bergantung pada TFM. (Untuk informasi selengkapnya, lihat Cara multitarget.) Misalnya, Anda dapat menggunakan kode berikut:public string Platform { get { #if NET45 return ".NET Framework" #elif NETSTANDARD2_0 return ".NET Standard" #else #error This code block does not match csproj TargetFrameworks list #endif } }
Tambahkan metadata NuGet apa pun yang Anda inginkan ke .csproj sebagai properti MSBuild.
Untuk daftar metadata paket yang tersedia dan nama properti MSBuild, lihat target paket. Lihat Juga Mengontrol aset dependensi.
Jika Anda ingin memisahkan properti terkait build dari metadata NuGet, Anda dapat menggunakan yang berbeda
PropertyGroup
, atau menempatkan properti NuGet di file lain dan menggunakan arahan MSBuildImport
untuk menyertakannya.Directory.Build.Props
danDirectory.Build.Targets
juga didukung dimulai dengan MSBuild 15.0.Sekarang, gunakan
dotnet pack
dan .nupkg yang dihasilkan menargetkan .NET Standard 2.0 dan .NET Framework 4.5.
Berikut adalah file .csproj yang dihasilkan menggunakan langkah-langkah sebelumnya dan .NET Core SDK 2.2.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
<Description>Sample project that targets multiple TFMs</Description>
</PropertyGroup>
</Project>
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk