Cílové rámce

NuGet používá odkazy na cílovou architekturu na různých místech k identifikaci a izolaci komponent závislých na rozhraní balíčku:

  • soubor projektu: Pro projekty ve stylu sady SDK obsahuje .csproj odkazy na cílovou architekturu.
  • Manifest .nuspec: Balíček může znamenat různé balíčky, které se mají zahrnout do projektu v závislosti na cílovém rozhraní projektu.
  • Název složky .nupkg: Složky uvnitř složky balíčku lib lze pojmenovat podle cílové architektury, z nichž každá obsahuje knihovny DLL a další obsah vhodný pro danou architekturu.
  • packages.config: Atribut targetframework závislosti určuje variantu balíčku, který se má nainstalovat.

Seznam všech podporovaných cílových architektur a jejich syntaxe TFM najdete v tématu Cílové architektury v projektech ve stylu sady SDK.

Hodnoty TargetFramework jsou aliasy

Vlastnost TargetFramework v souboru projektu je popisný název – alias – který se přeloží do kanonické identity architektury. Sada .NET SDK provádí tento překlad nastavením TargetFrameworkMoniker (TFM) a v případě potřeby TargetPlatformMoniker vlastnosti.

Když například napíšete <TargetFramework>net10.0-windows</TargetFramework>, sada .NET SDK to přeloží na:

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

NuGet pro kontroly kompatibility balíčků používá tyto vlastnosti monikeru , nikoli TargetFramework řetězec. To znamená, že TargetFramework samotná hodnota může být libovolný řetězec, pokud jsou vlastnosti monikeru nastaveny správně. Například následující projekt je platný:

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

Tento projekt obnoví a sestaví pro .NET 10.0, i když TargetFramework je bananahodnota . Sada .NET SDK už využívá tento mechanismus aliasingu pro tfmy specifické pro operační systém, jako net8.0-ios jsou a net8.0-android, kde je krátký TFM přeložen do úplného monikeru s informacemi o platformě.

Cílení na více verzí s duplicitními architekturami

Od NuGetu 7.6 / .NET SDK 10.0.300 se několik TargetFrameworks aliasů může přeložit na stejnou efektivní architekturu. To umožňuje scénáře, jako jsou buildy s více identifikátory RID a cílení na rozšíření s více verzemi. Podrobnosti o tom, jak to funguje s odkazy na obnovení, balení, zamknutí souborů a projektů, najdete v tématu Cílení na více architektur.

Podporované architektury

Na architekturu se obvykle odkazuje krátkým cílovým monikerem nebo TFM. V .NET Standard se také zobecní na TxM , aby bylo možné použít jeden odkaz na více architektur.

Poznámka:

Zdrojový kód klienta NuGet, který vypočítá následující tabulky, najdete v následujících umístěních:

Klienti NuGet podporují architektury v následující tabulce. Ekvivalenty se zobrazují v hranatých závorkách []. Upozorňujeme, že některé nástroje, například dotnet, můžou v některých souborech používat varianty kanonických TFM. Například dotnet pack používá .NETCoreApp2.0 v .nuspec souboru místo netcoreapp2.0. Různé klientské nástroje NuGet zpracovávají tyto varianty správně, ale při úpravách souborů byste měli vždy používat kanonické TFM.

název Zkratka TFMs/TxMs
.NET Framework Čisté net11
net20
net35
net40
net403
net45
net451
net452
net46
net461
net462
net47
net471
net472
net48
Microsoft Store (Windows Store) netcore netcore [netcore45]
netcore45 [win, win8]
netcore451 [win81]
netcore50
.NET MicroFramework netmf netmf
Windows vyhrát win8, netcore45]
win8 [netcore45, win]
win81 [netcore451]
win10 (nepodporuje platformu Windows 10)
Silverlight Sl sl4
sl5
Windows Phone (SL) Wp wp [wp7]
wp7
wp75
wp8
wp81
Windows Phone (UPW) wpa81
Univerzální platforma Windows Uap uap [uap10.0]
uap10.0
uap10.0.xxxxx (kde 10.0.xxxxx je minimální verze cílové platformy aplikace)
.NET Standard netstandard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET 5+ (a také .NET Core) netcoreapp netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
Čisté net5.0
net6.0
net7.0
net8.0
net9.0
net10.0
Tizen tizen tizen3
tizen4
Native nativní nativní

Zastaralé architektury

Následující architektury jsou zastaralé. Balíčky, jejichž cílem jsou tyto architektury, by se měly migrovat na uvedené nahrazení.

Zastaralá architektura Náhrada
aspnet50 netcoreapp
aspnetcore50
dnxcore50
Dnx
dnx45
dnx451
dnx452
dotnet netstandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
winrt vyhrát

Precedence

Řada architektur se vzájemně souvisí a je kompatibilní s nimi, ale nemusí se nutně shodovat:

.NET Framework Lze použít
uap (Univerzální platforma Windows) Windows 8.1
wpa81
netcore50
win (Microsoft Store) winrt

NET Standard

.NET Standard zjednodušuje odkazy mezi binárními kompatibilními architekturami, což umožňuje, aby jedna cílová architektura odkazovat na kombinaci jiných. (Pozadí najdete v úvodu k .NET.)

Nástroj NuGet Get Nearest Framework tool simuluje, co NuGet používá k výběru jedné architektury z mnoha dostupných prostředků architektury v balíčku na základě architektury projektu.

Řada dotnet monikerů by se měla používat v NuGetu 3.3 a starších. netstandard Syntaxe monikeru by měla být použita ve verzi 3.4 a novější.

Přenosné knihovny tříd

Výstraha

Seznamy PCL se nedoporučují. I když jsou seznamy PCLS podporované, autoři balíčků by měli místo toho podporovat netstandard. .NET Platform Standard je vývoj seznamů PCLs a představuje binární přenositelnost napříč platformami pomocí jediného monikeru, který není svázán se statickou knihovnou, jako je portable-a+b+c monikers.

Chcete-li definovat cílovou architekturu, která odkazuje na několik podřízených cílových architektur, portable klíčové slovo slouží k předponě seznamu odkazovaných architektur. Vyhněte se umělému zahrnutí dalších architektur, které nejsou přímo kompilovány, protože může vést k nežádoucím vedlejším účinkům v těchto architekturách.

Další architektury definované třetími stranami poskytují kompatibilitu s jinými prostředími, která jsou tímto způsobem přístupná. Kromě toho existují zkrácená čísla profilů, která jsou k dispozici pro odkazování na tyto kombinace souvisejících architektur jako Profile#, ale to není doporučený postup pro použití těchto čísel, protože snižuje čitelnost složek a .nuspec.

Profil # Rámce Celý název .NET Standard
Profil 2 . NETFramework 4.0 portable-net40+win8+sl4+wp7
Windows 8.0
Silverlight 4.0
WindowsPhone 7.0
Profil 3 . NETFramework 4.0 portable-net40+sl4
Silverlight 4.0
Profil 4 . NETFramework 4.5 portable-net45+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profil 5 . NETFramework 4.0 portable-net40+win8
Windows 8.0
Profil 6 . NETFramework 4.0.3 portable-net403+win8
Windows 8.0
Profil 7 . NETFramework 4.5 portable-net45+win8 netstandard1.1
Windows 8.0
Profil 14 . NETFramework 4.0 portable-net40+sl5
Silverlight 5.0
Profil 18 . NETFramework 4.0.3 portable-net403+sl4
Silverlight 4.0
Profil 19 . NETFramework 4.0.3 portable-net403+sl5
Silverlight 5.0
Profil 23 . NETFramework 4.5 portable-net45+sl4
Silverlight 4.0
Profil 24 . NETFramework 4.5 portable-net45+sl5
Silverlight 5.0
Profil 31 Windows 8.1 portable-win81+wp81 netstandard1.0
WindowsPhone 8.1 (SL)
Profil 32 Windows 8.1 portable-win81+wpa81 netstandard1.2
WindowsPhone 8.1 (UPW)
Profil 36 . NETFramework 4.0 portable-net40+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil 37 . NETFramework 4.0 portable-net40+sl5+win8
Silverlight 5.0
Windows 8.0
Profile41 . NETFramework 4.0.3 portable-net403+sl4+win8
Silverlight 4.0
Windows 8.0
Profil 42 . NETFramework 4.0.3 portable-net403+sl5+win8
Silverlight 5.0
Windows 8.0
Profil 44 . NETFramework 4.5.1 portable-net451+win81 netstandard1.2
Windows 8.1
Profil 46 . NETFramework 4.5 portable-net45+sl4+win8
Silverlight 4.0
Windows 8.0
Profil 47 . NETFramework 4.5 portable-net45+sl5+win8
Silverlight 5.0
Windows 8.0
Profile49 . NETFramework 4.5 portable-net45+wp8 netstandard1.0
WindowsPhone 8.0 (SL)
Profil 78 . NETFramework 4.5 portable-net45+win8+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil84 WindowsPhone 8.1 portable-wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (UPW)
Profil 88 . NETFramework 4.0 portable-net40+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profile92 . NETFramework 4.0 portable-net40+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UPW)
Profile95 . 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
Profil 102 . NETFramework 4.0.3 portable-net403+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UPW)
Profil 104 . NETFramework 4.5 portable-net45+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profil 111 . NETFramework 4.5 portable-net45+win8+wpa81 netstandard1.1
Windows 8.0
WindowsPhone 8.1 (UPW)
Profil 136 . NETFramework 4.0 portable-net40+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil 143 . NETFramework 4.0.3 portable-net403+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil 147 . NETFramework 4.0.3 portable-net403+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil 151 NETFramework 4.5.1 portable-net451+win81+wpa81 netstandard1.2
Windows 8.1
WindowsPhone 8.1 (UPW)
Profil 154 . NETFramework 4.5 portable-net45+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil 157 Windows 8.1 portable-win81+wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (SL)
WindowsPhone 8.1 (UPW)
Profil 158 . NETFramework 4.5 portable-net45+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil 225 . NETFramework 4.0 portable-net40+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UPW)
Profil 240 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UPW)
Profil 255 . NETFramework 4.5 portable-net45+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UPW)
Profil 259 . NETFramework 4.5 portable-net45+win8+wpa81+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.1 (UPW)
WindowsPhone 8.0 (SL)
Profil 328 . NETFramework 4.0 portable-net40+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UPW)
WindowsPhone 8.0 (SL)
Profil 336 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UPW)
WindowsPhone 8.0 (SL)
Profil 344 . NETFramework 4.5 portable-net45+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UPW)
WindowsPhone 8.0 (SL)

Kromě toho balíčky NuGet, které cílí na Xamarin, můžou používat další architektury definované Xamarinem:

název Description .NET Standard
monoandroid Mono podpora operačního systému Android netstandard1.4
monotouch Mono podpora pro iOS netstandard1.4
monomac Mono podpora pro OSX netstandard1.4
xamarinios Podpora pro Xamarin pro iOS netstandard1.4
xamarinmac Podpora pro Xamarin pro Mac netstandard1.4
xamarinpsthree Podpora Xamarinu na playstationu 3 netstandard1.4
xamarinpsfour Podpora pro Xamarin ve službě Playstation 4 netstandard1.4
xamarinpsvita Podpora pro Xamarin na PS Vita netstandard1.4
xamarinwatchos Xamarin for Watch OS netstandard1.4
xamarintvos Xamarin pro televizní operační systém netstandard1.4
xamarinxboxthreesixty Xamarin pro XBox 360 netstandard1.4
xamarinxboxone Xamarin pro XBox One netstandard1.4

Poznámka:

Stephen Cleary vytvořil nástroj, který uvádí seznam podporovaných pcLs, které najdete na jeho post , Framework profily v .NET.