Dela via


Målramverk

NuGet använder målramverksreferenser på olika platser för att specifikt identifiera och isolera ramverksberoende komponenter i ett paket:

  • projektfil: För SDK-liknande projekt innehåller .csproj referenserna för målramverket.
  • .nuspec-manifest: Ett paket kan indikera distinkta paket som ska ingå i ett projekt beroende på projektets målramverk.
  • Mappnamn för .nupkg: Mapparna i ett pakets mapp kan namnges lib enligt målramverket, som var och en innehåller DLL:er och annat innehåll som är lämpligt för det ramverket.
  • packages.config: Attributet targetframework för ett beroende anger varianten av ett paket som ska installeras.

Den kanoniska listan över alla målramverk som stöds och deras TFM-syntax finns i Målramverk i SDK-liknande projekt.

TargetFramework-värden är alias

Egenskapen TargetFramework i en projektfil är ett eget namn – ett alias – som översätts till en kanonisk ramverksidentitet. .NET SDK utför den här översättningen TargetFrameworkMoniker genom att ange (TFM) och i TargetPlatformMoniker förekommande fall egenskaperna.

När du till exempel skriver <TargetFramework>net10.0-windows</TargetFramework>översätter .NET SDK det till:

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

NuGet använder dessa monikeregenskaper – inte strängen TargetFramework – för paketkompatibilitetskontroller. Det innebär att TargetFramework själva värdet kan vara vilken sträng som helst, så länge monikeregenskaperna har angetts korrekt. Följande projekt är till exempel giltigt:

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

Det här projektet återställer och bygger för .NET 10.0, även om TargetFramework värdet är banana. .NET SDK förlitar sig redan på den här aliasmekanismen för OS-specifika TFM:er som net8.0-ios och net8.0-android, där den korta TFM:en översätts till den fullständiga monikern med plattformsinformation.

Multi-targeting med duplicerade ramverk

Från och med NuGet 7.6 /.NET SDK 10.0.300 kan flera TargetFrameworks alias matchas mot samma effektiva ramverk. Detta möjliggör scenarier som multi-RID-versioner och mål för flerversionstillägg. Mer information om hur detta fungerar med återställning, paket, låsfiler och projektreferenser finns i Rikta in sig på flera ramverk.

Ramverk som stöds

Ett ramverk refereras vanligtvis av en kort målramverksmoniker eller TFM. I .NET Standard generaliseras detta också till TxM för att tillåta en enda referens till flera ramverk.

Anmärkning

NuGet-klientens källkod som beräknar tabellerna nedan finns på följande platser:

NuGet-klienterna stöder ramverken i tabellen nedan. Motsvarigheter visas inom hakparenteser []. Observera att vissa verktyg, till exempel dotnet, kan använda varianter av kanoniska TFM:er i vissa filer. Till exempel dotnet pack används i en .nuspec fil i stället netcoreapp2.0.NETCoreApp2.0 för . De olika NuGet-klientverktygen hanterar dessa variationer korrekt, men du bör alltid använda kanoniska TFM:er när du redigerar filer direkt.

Namn Förkortning TFMs/TxMs
.NET Framework Net 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 vinna win [win8, netcore45]
win8 [netcore45, win]
win81 [netcore451]
win10 (stöds inte av Windows 10 Platform)
Silverlight Sl sl4
sl5
Windows Phone (SL) Wp wp [wp7]
wp7
wp75
wp8
wp81
Windows Phone (UWP) wpa81
Universell Windows-plattform Uap uap [uap10.0]
uap10.0
uap10.0.xxxxx (där 10.0.xxxxx är målplattformens lägsta version av den förbrukande appen)
.NET Standard netstandard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET 5+ (och .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
Native infödd infödd

Inaktuella ramverk

Följande ramverk är inaktuella. Paket som riktar sig till dessa ramverk bör migreras till de angivna ersättningarna.

Inaktuellt ramverk Ersättning
aspnet50 netcoreapp
aspnetcore50
dnxcore50
Dnx
dnx45
dnx451
dnx452
dotnet netstandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
winrt vinna

Precedence

Ett antal ramverk är relaterade till och kompatibla med varandra, men inte nödvändigtvis likvärdiga:

Ramverk Kan använda
uap (Universell Windows-plattform) Windows 8.1
wpa81
netcore50
win (Microsoft Store) winrt

NET Standard

.NET Standard förenklar referenser mellan binärkompatibla ramverk, vilket gör att ett enda målramverk kan referera till en kombination av andra. (För bakgrund, se .NET Primer.)

NuGet Get Nearest Framework Tool simulerar vad NuGet använder för att välja ett ramverk från många tillgängliga ramverkstillgångar i ett paket baserat på projektets ramverk.

Monikers-serien dotnet ska användas i NuGet 3.3 och tidigare. Moniker-syntaxen netstandard bör användas i v3.4 och senare.

Portabla klassbibliotek

Varning

PCL:er rekommenderas inte. Även om PCL:er stöds bör paketförfattarna ha stöd för netstandard i stället. .NET Platform Standard är en utveckling av PCL:er och representerar binär portabilitet mellan plattformar med en enda moniker som inte är knuten till ett statiskt bibliotek som portable-a+b+ c-monikers.

För att definiera ett målramverk som refererar till flera underordnade målramverk används nyckelordet portable för att prefixa listan över refererade ramverk. Undvik att artificiellt inkludera extra ramverk som inte kompileras direkt mot eftersom det kan leda till oavsiktliga biverkningar i dessa ramverk.

Ytterligare ramverk som definieras av tredje part ger kompatibilitet med andra miljöer som är tillgängliga på detta sätt. Dessutom finns det korta profilnummer som är tillgängliga för att referera till dessa kombinationer av relaterade ramverk som Profile#, men detta är inte en rekommenderad metod att använda dessa siffror eftersom det minskar läsbarheten för mapparna och .nuspec.

Profil # Ramverk Fullständigt namn .NET Standard
Profil2 . 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
Profil4 . 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 (UWP)
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
Profil 41 . 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
Profil 49 . 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)
Profil 84 WindowsPhone 8.1 portable-wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (UWP)
Profil 88 . NETFramework 4.0 portable-net40+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profil 92 . NETFramework 4.0 portable-net40+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil 95 . NETFramework 4.0.3 portable-net403+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profil 96 . 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 (UWP)
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 (UWP)
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 (UWP)
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 (UWP)
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 (UWP)
Profil 240 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil 255 . NETFramework 4.5 portable-net45+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil 259 . NETFramework 4.5 portable-net45+win8+wpa81+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profil 328 . NETFramework 4.0 portable-net40+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
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 (UWP)
WindowsPhone 8.0 (SL)
Profil 344 . NETFramework 4.5 portable-net45+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)

Dessutom kan NuGet-paket som riktar sig mot Xamarin använda ytterligare Xamarin-definierade ramverk:

Namn Beskrivning .NET Standard
monoandroid Mono-stöd för Android OS netstandard1.4
monotouch Monostöd för iOS netstandard1.4
monomac Mono-stöd för OSX netstandard1.4
xamarinios Stöd för Xamarin för iOS netstandard1.4
xamarinmac Stöd för Xamarin för Mac netstandard1.4
xamarinpsthree Stöd för Xamarin på Playstation 3 netstandard1.4
xamarinpsfour Stöd för Xamarin på Playstation 4 netstandard1.4
xamarinpsvita Stöd för Xamarin på PS Vita netstandard1.4
xamarinwatchos Xamarin för Watch OS netstandard1.4
xamarintvos Xamarin för TV OS netstandard1.4
xamarinxboxthreesixty Xamarin för XBox 360 netstandard1.4
xamarinxboxone Xamarin för XBox One netstandard1.4

Anmärkning

Stephen Cleary har skapat ett verktyg som listar de PCL:er som stöds, som du hittar på hans inlägg, Framework-profiler i .NET.