Proje dosya .NET Framework birden çok sürüm desteği

Bir projeyi ilk kez ekleyebilirsiniz çünkü en geniş .NET Standard ile uyumluluk sağladığı için bir sınıf kitaplığı oluşturmanızı öneririz. Bir .NET Standard kullanarak bir .NET kitaplığına varsayılan olarak platformlar arası destek eklersiniz. Ancak bazı senaryolarda belirli bir çerçeveyi hedef alan kodu da dahil etmek zorunda kaldınız. Bu makalede, SDK stili projeler için bunu nasıl yapacakları açıklanmıştır.

SDK stili projeler için, proje dosyanıza birden çok hedef çerçeve (TFM) için destek yapılandırabilirsiniz, ardından paketi oluşturmak için veya msbuild /t:pack kullanabilirsiniz.

Not

nuget.exe CLI SDK stili projeleri paketlemeyi desteklemez, bu nedenle yalnızca veya dotnet packmsbuild /t:pack kullanın. Bunun yerine, genellikle dosyada yer alan tüm özellikleri proje dosyasına dahil etmek öneririz. SDK stili olmayan .NET Framework birden çok sürümü hedeflemek için bkz. Birden çok .NET Framework destekleme.

Birden çok sürüm sürümünü destekleyen bir .NET Framework oluşturma

  1. içinde yeni bir .NET Standard sınıf kitaplığı oluşturun Visual Studio dotnet new classlib kullanın.

    En iyi uyumluluk için bir .NET Standard sınıf kitaplığı oluşturmanızı öneririz.

  2. Hedef çerçeveleri desteklemek için .csproj dosyasını düzenleyin. Örneğin, değiştir

    <TargetFramework>netstandard2.0</TargetFramework>

    Yeni değer:

    <TargetFrameworks>netstandard2.0;net45</TargetFrameworks>

    XML öğesinin tekilden çoğul olarak değiştirildiklerinden emin olun (hem açık hem de kapalı etiketlerine "s" ekleyin).

  3. Yalnızca bir TFM'de çalışan bir kodunuz varsa, TFM'ye bağımlı kodu ayırmak için veya #if NET45#if NETSTANDARD2_0 kullanabilirsiniz. (Daha fazla bilgi için bkz. Çoklu hedef.) Örneğin, aşağıdaki kodu kullanabilirsiniz:

    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. NuGet .csproj'a istediğiniz tüm meta verileri MSBuild ekleyin.

    Kullanılabilir paket meta verileri listesi ve MSBuild adları için bkz. paket hedefi. Ayrıca bkz. Bağımlılık varlıklarını denetleme.

    Derlemeyle ilgili özellikleri NuGet meta verilerinden ayırmak için farklı bir kullanabilir veya NuGet özelliklerini başka bir dosyaya yer MSBuild'nin yönergesi ile dahil PropertyGroupImport etmek için kullanabilirsiniz. Directory.Build.Propsve Directory.Build.Targets 15.0'MSBuild başlayarak da de destekler.

  5. Şimdi kullanın dotnet pack ve sonuçta elde edilen dotnet pack hem .NET Standard 2.0'.NET Framework 4.5'i hedefler.

Önceki adımlar kullanılarak oluşturulan .csproj dosyası ve 2.2'.NET Core SDK.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
    <Description>Sample project that targets multiple TFMs</Description>
  </PropertyGroup>

</Project>

Ayrıca bkz.