Partager via


Frameworks cibles

NuGet utilise des références de framework cible à divers endroits pour identifier et isoler spécifiquement les composants dépendants de l’infrastructure d’un package :

  • fichier projet : pour les projets de style SDK, .csproj contient les références de framework cible.
  • Manifeste .nuspec : un package peut indiquer des packages distincts à inclure dans un projet en fonction du framework cible du projet.
  • Nom du dossier .nupkg : les dossiers à l’intérieur du dossier d’un lib package peuvent être nommés en fonction du framework cible, chacun contenant les DLL et d’autres contenus appropriés à cette infrastructure.
  • packages.config: l’attribut targetframework d’une dépendance spécifie la variante d’un package à installer.

Pour obtenir la liste canonique de tous les frameworks cibles pris en charge et leur syntaxe TFM, consultez Les frameworks cibles dans les projets de style SDK.

Les valeurs TargetFramework sont des alias

La TargetFramework propriété d’un fichier projet est un nom convivial , un alias, qui est traduit en une identité de framework canonique. Le Kit de développement logiciel (SDK) .NET effectue cette traduction en définissant le TargetFrameworkMoniker (TFM) et, le cas échéant, les TargetPlatformMoniker propriétés.

Par exemple, lorsque vous écrivez <TargetFramework>net10.0-windows</TargetFramework>, le Kit de développement logiciel (SDK) .NET le traduit en :

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

NuGet utilise ces propriétés moniker, et non la TargetFramework chaîne, pour les vérifications de compatibilité des packages. Cela signifie que la TargetFramework valeur elle-même peut être n’importe quelle chaîne, tant que les propriétés de moniker sont définies correctement. Par exemple, le projet suivant est valide :

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

Ce projet restaure et génère pour .NET 10.0, même si la TargetFramework valeur est banana. Le Kit de développement logiciel (SDK) .NET s’appuie déjà sur ce mécanisme d’alias pour les tfMs spécifiques au système d’exploitation et net8.0-iosnet8.0-android, où le TFM court est traduit en moniker complet avec des informations de plateforme.

Ciblage multiple avec des frameworks en double

À compter de NuGet 7.6 / .NET SDK 10.0.300, plusieurs TargetFrameworks alias peuvent être résolus dans le même framework efficace. Cela permet des scénarios tels que les builds multi-RID et le ciblage d’extension multiversion. Pour plus d’informations sur l’utilisation de la restauration, du pack, du verrouillage des fichiers et des références de projet, consultez Ciblage de plusieurs frameworks.

Frameworks pris en charge

Un framework est généralement référencé par un moniker de framework cible court ou TFM. Dans .NET Standard, il est également généralisé à TxM pour permettre une référence unique à plusieurs frameworks.

Note

Le code source du client NuGet qui calcule les tableaux ci-dessous se trouve à l’emplacement suivant :

Les clients NuGet prennent en charge les frameworks dans le tableau ci-dessous. Les équivalents sont affichés entre crochets []. Notez que certains outils, tels que dotnet, peuvent utiliser des variantes de tfms canoniques dans certains fichiers. Par exemple, dotnet pack les utilisations .NETCoreApp2.0 dans un .nuspec fichier plutôt que netcoreapp2.0dans . Les différents outils clients NuGet gèrent ces variantes correctement, mais vous devez toujours utiliser des tfms canoniques lors de la modification des fichiers directement.

Nom Abréviation TFMs/TxMs
.NET Framework filet 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
MicroFramework .NET netmf netmf
Fenêtres gagner win [win8, netcore45]
win8 [netcore45, win]
win81 [netcore451]
win10 (non pris en charge par la plateforme Windows 10)
Silverlight Sl sl4
sl5
Windows Phone (SL) Wp wp [wp7]
wp7
wp75
wp8
wp81
Windows Phone (UWP) wpa81
Plateforme Windows universelle uap uap [uap10.0]
uap10.0
uap10.0.xxxxx (où 10.0.xxxxx est la version minimale de plateforme cible de l’application consommatrice)
.NET Standard netstandard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET 5+ (et .NET Core) netcoreapp netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
filet net5.0
net6.0
net7.0
net8.0
net9.0
net10.0
Tizen tizen tizen3
tizen4
Natif natif natif

Infrastructures déconseillées

Les infrastructures suivantes sont déconseillées. Les packages ciblant ces frameworks doivent migrer vers les remplacements indiqués.

Infrastructure déconseillée Remplacement
aspnet50 netcoreapp
aspnetcore50
dnxcore50
Dnx
dnx45
dnx451
dnx452
dotnet netstandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
winrt gagner

Priorité

Un certain nombre de frameworks sont liés et compatibles les uns avec les autres, mais pas nécessairement équivalents :

Cadre Peut utiliser
uap (plateforme Windows universelle) win81
wpa81
netcore50
win (Microsoft Store) winrt

.NET Standard

.NET Standard simplifie les références entre les frameworks compatibles binaires, ce qui permet à un framework cible unique de référencer une combinaison d’autres. (Pour plus d’informations, consultez .NET Primer.)

L’outil NuGet Get Nearest Framework simule ce que NuGet utilise pour sélectionner une infrastructure parmi de nombreuses ressources d’infrastructure disponibles dans un package basé sur l’infrastructure du projet.

La dotnet série de monikers doit être utilisée dans NuGet 3.3 et versions antérieures ; la netstandard syntaxe de moniker doit être utilisée dans la version 3.4 et ultérieure.

Bibliothèques de classes portables

Avertissement

Les listes de contrôle d’accès réseau ne sont pas recommandées. Bien que les listes de contrôle d’accès réseau soient prises en charge, les auteurs de packages doivent prendre en charge netstandard à la place. .NET Platform Standard est une évolution des PCL et représente la portabilité binaire entre les plateformes à l’aide d’un seul moniker qui n’est pas lié à une bibliothèque statique comme les monikers portable-a+b+c .

Pour définir une infrastructure cible qui fait référence à plusieurs frameworks cibles enfants, le portable mot clé utilisé pour préfixer la liste des frameworks référencés. Évitez d’inclure artificiellement des infrastructures supplémentaires qui ne sont pas directement compilées, car elles peuvent entraîner des effets secondaires inattendus dans ces infrastructures.

Les infrastructures supplémentaires définies par des tiers fournissent une compatibilité avec d’autres environnements accessibles de cette façon. En outre, il existe des numéros de profil abrégés qui sont disponibles pour référencer ces combinaisons de frameworks connexes, Profile#mais il n’est pas recommandé d’utiliser ces nombres car il réduit la lisibilité des dossiers et .nuspec.

Profil # Frameworks Nom complet .NET Standard
Profil2 . NETFramework 4.0 portable-net40+win8+sl4+wp7
Windows 8.0
Silverlight 4.0
WindowsPhone 7.0
Profile3 . NETFramework 4.0 portable-net40+sl4
Silverlight 4.0
Profile4 . NETFramework 4.5 portable-net45+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profile5 . NETFramework 4.0 portable-net40+win8
Windows 8.0
Profile6 . NETFramework 4.0.3 portable-net403+win8
Windows 8.0
Profile7 . NETFramework 4.5 portable-net45+win8 netstandard1.1
Windows 8.0
Profile14 . NETFramework 4.0 portable-net40+sl5
Silverlight 5.0
Profile18 . NETFramework 4.0.3 portable-net403+sl4
Silverlight 4.0
Profil19 . NETFramework 4.0.3 portable-net403+sl5
Silverlight 5.0
Profile23 . NETFramework 4.5 portable-net45+sl4
Silverlight 4.0
Profile24 . NETFramework 4.5 portable-net45+sl5
Silverlight 5.0
Profile31 Windows 8.1 portable-win81+wp81 netstandard1.0
WindowsPhone 8.1 (SL)
Profile32 Windows 8.1 portable-win81+wpa81 netstandard1.2
WindowsPhone 8.1 (UWP)
Profile36 . NETFramework 4.0 portable-net40+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile37 . 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
Profile42 . NETFramework 4.0.3 portable-net403+sl5+win8
Silverlight 5.0
Windows 8.0
Profile44 . NETFramework 4.5.1 portable-net451+win81 netstandard1.2
Windows 8.1
Profile46 . NETFramework 4.5 portable-net45+sl4+win8
Silverlight 4.0
Windows 8.0
Profile47 . 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)
Profile78 . NETFramework 4.5 portable-net45+win8+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile84 WindowsPhone 8.1 portable-wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (UWP)
Profile88 . 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 (UWP)
Profile95 . NETFramework 4.0.3 portable-net403+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profile96 . NETFramework 4.0.3 portable-net403+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profile102 . NETFramework 4.0.3 portable-net403+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile104 . NETFramework 4.5 portable-net45+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profile111 . NETFramework 4.5 portable-net45+win8+wpa81 netstandard1.1
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile136 . NETFramework 4.0 portable-net40+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile143 . NETFramework 4.0.3 portable-net403+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile147 . NETFramework 4.0.3 portable-net403+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile151 NETFramework 4.5.1 portable-net451+win81+wpa81 netstandard1.2
Windows 8.1
WindowsPhone 8.1 (UWP)
Profile154 . NETFramework 4.5 portable-net45+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile157 Windows 8.1 portable-win81+wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (SL)
WindowsPhone 8.1 (UWP)
Profile158 . NETFramework 4.5 portable-net45+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile225 . NETFramework 4.0 portable-net40+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile240 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile255 . NETFramework 4.5 portable-net45+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile259 . NETFramework 4.5 portable-net45+win8+wpa81+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile328 . NETFramework 4.0 portable-net40+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile336 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile344 . NETFramework 4.5 portable-net45+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)

En outre, les packages NuGet ciblant Xamarin peuvent utiliser des frameworks Xamarin supplémentaires :

Nom Description .NET Standard
monoandroid Prise en charge mono du système d’exploitation Android netstandard1.4
monotouche Prise en charge mono pour iOS netstandard1.4
monomac Prise en charge de Mono pour OSX netstandard1.4
xamarinios Prise en charge de Xamarin pour iOS netstandard1.4
xamarinmac Prise en charge de Xamarin pour Mac netstandard1.4
xamarinpsthree Prise en charge de Xamarin sur Playstation 3 netstandard1.4
xamarinpsfour Prise en charge de Xamarin sur Playstation 4 netstandard1.4
xamarinpsvita Prise en charge de Xamarin sur PS Vita netstandard1.4
xamarinwatchos Xamarin pour le système d’exploitation Watch netstandard1.4
xamarintvos Xamarin pour le système d’exploitation TV netstandard1.4
xamarinxboxthreesixty Xamarin pour XBox 360 netstandard1.4
xamarinxboxone Xamarin pour XBox One netstandard1.4

Note

Stephen Cleary a créé un outil qui répertorie les LISTES de contrôle d’accès réseau prises en charge, que vous trouverez sur ses profils post-Framework dans .NET.