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
içinde yeni bir .NET Standard sınıf kitaplığı oluşturun Visual Studio
dotnet new classlibkullanın.En iyi uyumluluk için bir .NET Standard sınıf kitaplığı oluşturmanızı öneririz.
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).
Yalnızca bir TFM'de çalışan bir kodunuz varsa, TFM'ye bağımlı kodu ayırmak için veya
#if NET45#if NETSTANDARD2_0kullanabilirsiniz. (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 } }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
PropertyGroupImportetmek için kullanabilirsiniz.Directory.Build.PropsveDirectory.Build.Targets15.0'MSBuild başlayarak da de destekler.Şimdi kullanın
dotnet packve sonuçta elde edilendotnet packhem .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>