Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
libenligt 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
targetframeworkfö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.0TargetPlatformMoniker=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:
- Ramverksnamn som stöds: FrameworkConstants.cs
- Ramverkspriorence och mappning: DefaultFrameworkMappings.cs
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.