Bagikan melalui


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

  1. 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.

  2. 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).

  3. 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
       }
    }
    
  4. 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 MSBuild Import untuk menyertakannya. Directory.Build.Props dan Directory.Build.Targets juga didukung dimulai dengan MSBuild 15.0.

  5. 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