Hedef çerçeveler

NuGet, bir paketin çerçeveye bağımlı bileşenlerini özel olarak tanımlamak ve yalıtmak için çeşitli yerlerde hedef çerçeve başvurularını kullanır:

  • proje dosyası: SDK stilindeki projeler için .csproj hedef çerçeve başvurularını içerir.
  • .nuspec bildirimi: Paket, projenin hedef çerçevesine bağlı olarak projeye eklenecek farklı paketleri gösterebilir.
  • .nupkg klasör adı: Bir paketin lib klasörünün içindeki klasörler hedef çerçeveye göre adlandırılabilir; her biri dll'leri ve bu çerçeveye uygun diğer içerikleri içerir.
  • packages.config: targetframework Bağımlılığın özniteliği, yüklenecek paketin değişkenini belirtir.

Desteklenen tüm hedef çerçevelerin ve TFM söz dizimlerinin kurallı listesi için bkz. SDK stili projelerde hedef çerçeveler.

TargetFramework değerleri diğer adlardır

TargetFramework Proje dosyasındaki özellik, kurallı çerçeve kimliğine çevrilen kolay bir addır (diğer addır). .NET SDK'sı bu çeviriyi TargetFrameworkMoniker (TFM) ve uygun TargetPlatformMoniker olduğunda özelliklerini ayarlayarak gerçekleştirir.

Örneğin, yazdığınızda <TargetFramework>net10.0-windows</TargetFramework>.NET SDK bunu şu şekilde çevirir:

  • TargetFrameworkMoniker = .NETCoreApp,Version=v10.0
  • TargetPlatformMoniker = Windows,Version=7.0

NuGet, paket uyumluluk denetimleri için dizeyi TargetFramework değil bu takma adı özelliklerini kullanır. Bu, takma ad özellikleri doğru ayarlandığı sürece değerin herhangi bir dize olabileceği anlamına gelir TargetFramework . Örneğin, aşağıdaki proje geçerlidir:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>banana</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(TargetFramework)' == 'banana' ">
    <TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>
    <TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
    <TargetFrameworkMoniker>.NETCoreApp,Version=v10.0</TargetFrameworkMoniker>
  </PropertyGroup>
</Project>

Bu proje, değeri olsa TargetFramework bile .NET 10.0 için geri yükler ve derler banana. .NET SDK'sı, kısa TFM'nin platform bilgileriyle tam takma adına çevrildiği ve net8.0-androidgibi net8.0-ios işletim sistemine özgü TFM'ler için bu diğer ad mekanizmasına zaten dayanır.

Yinelenen çerçevelerle çoklu hedefleme

NuGet 7.6 / .NET SDK 10.0.300'den başlayarak, birden çok TargetFrameworks diğer ad aynı etkin çerçeveye çözümlenebilir. Bu, çoklu RID derlemeleri ve çok sürümlü uzantı hedefleme gibi senaryoları etkinleştirir. Bunun geri yükleme, paketleme, kilitleme dosyaları ve proje başvuruları ile nasıl çalıştığı hakkında ayrıntılı bilgi için bkz. Birden çok çerçeveyi hedefleme.

Desteklenen çerçeveler

Çerçeveye genellikle kısa bir hedef çerçeve adı veya TFM tarafından başvurulur. .NET Standard'da bu, birden çok çerçeveye tek bir başvuruya izin vermek için TxM'de de genelleştirilir.

Uyarı

Aşağıdaki tabloları hesaplayan NuGet istemci kaynak kodu aşağıdaki konumlarda bulunur:

NuGet istemcileri aşağıdaki tabloda yer alan çerçeveleri destekler. Eşdeğerler köşeli ayraç [] içinde gösterilir. gibi dotnetbazı araçların bazı dosyalarda kurallı TFM'lerin çeşitlemelerini kullanabileceğini unutmayın. Örneğin, dotnet pack yerine bir .nuspec dosyada netcoreapp2.0kullanır.NETCoreApp2.0. Çeşitli NuGet istemci araçları bu çeşitlemeleri düzgün bir şekilde işler, ancak dosyaları doğrudan düzenlerken her zaman kurallı TFM'ler kullanmanız gerekir.

İsim Abbreviation TFM'ler/TxM'ler
.NET Çerçevesi Net net11
net20
net35
net40
net403
net45
net451
net452
net46
net461
net462
net47
net471
net472
net48
Microsoft Store (Windows Mağazası) netcore netcore [netcore45]
netcore45 [win, win8]
netcore451 [win81]
netcore50
.NET MicroFramework netmf netmf
Windows kazanmak win [win8, netcore45]
win8 [netcore45, win]
win81 [netcore451]
win10 (Windows 10 Platformu tarafından desteklenmez)
Silverlight Sl sl4
sl5
Windows Phone (SL) Wp wp [wp7]
wp7
wp75
wp8
wp81
Windows Phone (UWP) wpa81
Evrensel Windows Platformu Uçar uap [uap10.0]
uap10.0
uap10.0.xxxxx (burada 10.0.xxxxx, tüketen uygulamanın hedef platform min sürümüdür)
.NET Standard netstandard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET 5+ (ve .NET Core) netcoreapp netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
Net net5.0
net6.0
net7.0
net8.0
net9.0
net10.0
Tizen tizen tizen3
tizen4
Yerli yerel yerel

Kullanım dışı çerçeveler

Aşağıdaki çerçeveler kullanım dışıdır. Bu çerçeveleri hedefleyen paketler belirtilen değişimlere geçirilmelidir.

Kullanım dışı çerçeve Replacement
aspnet50 netcoreapp
aspnetcore50
dnxcore50
Dnx
dnx45
dnx451
dnx452
dotnet netstandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
winrt kazanmak

Öncelik

Bir dizi çerçeve birbiriyle ilişkilidir ve birbiriyle uyumludur, ancak eşdeğer olması gerekmez:

Çerçeve Kullanabilir
uap (Evrensel Windows Platformu) Windows 8.1
wpa81
netcore50
win (Microsoft Store) winrt

NET Standard

.NET Standard , ikili uyumlu çerçeveler arasındaki başvuruları basitleştirerek tek bir hedef çerçevenin diğerlerinin birleşimine başvurmasını sağlar. (Arka plan için bkz . .NET Primer.)

NuGet En Yakın ÇerçeveYi Al Aracı, projenin çerçevesine göre bir paketteki birçok kullanılabilir çerçeve varlığından bir çerçeve seçmek için NuGet'in ne kullandığının benzetimini oluşturur.

Ad dotnet dizileri NuGet 3.3 ve önceki sürümlerde kullanılmalıdır; netstandard v3.4 ve sonraki sürümlerde takma ad söz dizimi kullanılmalıdır.

Taşınabilir Sınıf Kitaplıkları

Uyarı

PCL'ler önerilmez. PCL'ler destekleniyor olsa da, paket yazarlarının bunun yerine netstandard'ı desteklemesi gerekir. .NET Platform Standardı, PCL'lerin evrimidir ve taşınabilir-a+b+c adlarına benzer statik bir kitaplığa bağlı olmayan tek bir ad kullanarak platformlar arasında ikili taşınabilirliği temsil eder.

Birden çok alt-hedef çerçeveye başvuran bir hedef çerçeve tanımlamak için, portable başvuruda bulunılan çerçeveler listesine ön ek eklemek için kullanılan anahtar sözcük kullanılır. Doğrudan derlenmeyen ek çerçeveleri yapay olarak eklemekten kaçının çünkü bu çerçevelerde istenmeyen yan etkilere yol açabilir.

Üçüncü taraflar tarafından tanımlanan ek çerçeveler, bu şekilde erişilebilen diğer ortamlarla uyumluluk sağlar. Buna ek olarak, bu ilişkili çerçeve Profile#birleşimlerine olarak başvurmak için kullanılabilen kısaltma profil numaraları vardır, ancak bu, ve klasörlerinin .nuspecokunabilirliğini azalttığı için bu sayıların kullanılması önerilen bir uygulama değildir.

Profil # Çerçeveler Tam adı .NET Standard
Profil2 . NETFramework 4.0 portable-net40+win8+sl4+wp7
Windows 8.0
Silverlight 4.0
WindowsPhone 7.0
Profil3 . NETFramework 4.0 portable-net40+sl4
Silverlight 4.0
Profil4 . NETFramework 4.5 portable-net45+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profil5 . NETFramework 4.0 portable-net40+win8
Windows 8.0
Profil6 . NETFramework 4.0.3 portable-net403+win8
Windows 8.0
Profil7 . NETFramework 4.5 taşınabilir-net45+win8 netstandard1.1
Windows 8.0
Profil14 . NETFramework 4.0 portable-net40+sl5
Silverlight 5.0
Profil18 . NETFramework 4.0.3 portable-net403+sl4
Silverlight 4.0
Profil19 . NETFramework 4.0.3 portable-net403+sl5
Silverlight 5.0
Profil23 . NETFramework 4.5 portable-net45+sl4
Silverlight 4.0
Profil24 . NETFramework 4.5 taşınabilir-net45+sl5
Silverlight 5.0
Profil31 Windows 8.1 taşınabilir-win81+wp81 netstandard1.0
WindowsPhone 8.1 (SL)
Profil32 Windows 8.1 taşınabilir-win81+wpa81 netstandard1.2
WindowsPhone 8.1 (UWP)
Profil36 . NETFramework 4.0 portable-net40+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil37 . NETFramework 4.0 portable-net40+sl5+win8
Silverlight 5.0
Windows 8.0
Profil41 . NETFramework 4.0.3 portable-net403+sl4+win8
Silverlight 4.0
Windows 8.0
Profil42 . NETFramework 4.0.3 portable-net403+sl5+win8
Silverlight 5.0
Windows 8.0
Profil44 . NETFramework 4.5.1 taşınabilir-net451+win81 netstandard1.2
Windows 8.1
Profil46 . NETFramework 4.5 taşınabilir-net45+sl4+win8
Silverlight 4.0
Windows 8.0
Profil47 . NETFramework 4.5 portable-net45+sl5+win8
Silverlight 5.0
Windows 8.0
Profil49 . NETFramework 4.5 portable-net45+wp8 netstandard1.0
WindowsPhone 8.0 (SL)
Profil78 . NETFramework 4.5 taşınabilir-net45+win8+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil84 WindowsPhone 8.1 taşınabilir-wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (UWP)
Profil88 . NETFramework 4.0 portable-net40+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profil92 . NETFramework 4.0 portable-net40+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil95 . NETFramework 4.0.3 portable-net403+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profil96 . NETFramework 4.0.3 portable-net403+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profil102 . NETFramework 4.0.3 portable-net403+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil104 . NETFramework 4.5 taşınabilir-net45+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profil111 . NETFramework 4.5 taşınabilir-net45+win8+wpa81 netstandard1.1
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil136 . NETFramework 4.0 portable-net40+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil143 . NETFramework 4.0.3 portable-net403+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil147 . NETFramework 4.0.3 portable-net403+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil151 NETFramework 4.5.1 portable-net451+win81+wpa81 netstandard1.2
Windows 8.1
WindowsPhone 8.1 (UWP)
Profil154 . NETFramework 4.5 portable-net45+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil157 Windows 8.1 taşınabilir-win81+wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (SL)
WindowsPhone 8.1 (UWP)
Profil158 . NETFramework 4.5 portable-net45+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil225 . NETFramework 4.0 portable-net40+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil240 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil255 . NETFramework 4.5 portable-net45+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil259 . NETFramework 4.5 portable-net45+win8+wpa81+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profil328 . NETFramework 4.0 portable-net40+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profil336 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profil344 . NETFramework 4.5 portable-net45+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)

Ayrıca, Xamarin'i hedefleyen NuGet paketleri ek Xamarin tanımlı çerçeveler kullanabilir:

İsim Açıklama .NET Standard
monoandroid Android işletim sistemi için Mono Desteği netstandard1.4
monotouch iOS için Mono Desteği netstandard1.4
monomac OSX için Mono Desteği netstandard1.4
xamarinios iOS için Xamarin desteği netstandard1.4
xamarinmac Mac için Xamarin'i destekler netstandard1.4
xamarinpsthree Playstation 3'te Xamarin desteği netstandard1.4
xamarinpsfour Playstation 4'te Xamarin desteği netstandard1.4
xamarinpsvita PS Vita'da Xamarin desteği netstandard1.4
xamarinwatchos watch işletim sistemi için Xamarin netstandard1.4
xamarintvos TV işletim sistemi için Xamarin netstandard1.4
xamarinxboxthreesixty XBox 360 için Xamarin netstandard1.4
xamarinxboxone XBox One için Xamarin netstandard1.4

Uyarı

Stephen Cleary, desteklenen PCL'leri listeleyen ve .NET'teki Framework profillerini içeren gönderisinde bulabileceğiniz bir araç oluşturdu.