Versions cible de .Net Framework
NuGet utilise les références des versions cibles de .NET Framework à de nombreux endroits pour identifier et isoler spécifiquement les composants dépendants du framework d’un package :
- fichier projet : pour les projets de style SDK, le fichier .csproj contient les références de versions cibles.
- Manifeste .nuspec : un package peut désigner des packages distincts à inclure dans un projet en fonction de la version cible de .NET Framework du projet.
- Nom du dossier .nupkg : les dossiers à l’intérieur du dossier
lib
d’un package peuvent être nommés en fonction de la version cible de .NET Framework, chacun contenant les DLL et tout autre contenu appropriés pour ce framework. - packages.config : l’attribut
targetframework
d’une dépendance spécifie la variante d’un package à installer.
Remarque
NuGet prend en charge toutes les versions cibles .NET modernes :
- Pour obtenir la liste des frameworks cibles le plus récents, consultez le document Frameworks cibles dans les projets de style SDK.
Frameworks pris en charge
Un framework est généralement référencé par un moniker du Framework cible ou TFM court. Dans .NET Standard, ceci est également généralisé sous la forme TxM pour permettre une référence unique à plusieurs frameworks.
Remarque
Le code source du client NuGet qui calcule les tableaux ci-dessous se trouve aux emplacements suivants :
- Noms des frameworks pris en charge : FrameworkConstants.cs
- Priorité des frameworks et mappage : DefaultFrameworkMappings.cs
Les clients NuGet prennent en charge les frameworks dans le tableau ci-dessous. Les équivalents sont indiqués entre crochets []. Notez que certains outils, tels que dotnet
, peuvent utiliser les variantes de monikers TFM canoniques dans certains fichiers. Par exemple, dotnet pack
utilise .NETCoreApp2.0
dans un fichier .nuspec
plutôt que netcoreapp2.0
. Les différents outils du client NuGet gèrent correctement ces variantes, mais vous devez toujours utiliser des monikers TFM canoniques quand vous modifiez directement les fichiers.
Nom | Abréviation | 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 | win | 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 | ||
net | net5.0 | |
net6.0 | ||
net7.0 | ||
net8.0 | ||
Tizen | tizen | tizen3 |
tizen4 | ||
Natif | native | native |
Frameworks dépréciés
Les frameworks suivants sont dépréciés. Les packages ciblant ces frameworks doivent migrer vers les versions de remplacement indiquées.
Framework déprécié | Remplacement |
---|---|
aspnet50 | netcoreapp |
aspnetcore50 | |
dnxcore50 | |
dnx | |
dnx45 | |
dnx451 | |
dnx452 | |
dotnet | netstandard |
dotnet50 | |
dotnet51 | |
dotnet52 | |
dotnet53 | |
dotnet54 | |
dotnet55 | |
dotnet56 | |
winrt | win |
Priorité
Un certain nombre de frameworks sont liés et compatibles entre eux, mais sans être nécessairement équivalents :
Infrastructure | 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 au niveau binaire, ce qui permet à un même framework cible de référencer une combinaison d’autres frameworks. (Pour obtenir des informations générales, consultez le Guide de .NET.)
L’outil Get Nearest Framework Nuget simule ce que NuGet utilise pour la sélection d’un framework à partir de nombreuses ressources de framework disponibles dans un package, en fonction du framework du projet.
La série dotnet
des monikers doit être utilisée dans NuGet 3.3 et versions antérieures ; la syntaxe de moniker netstandard
doit être utilisée dans v3.4 et versions ultérieures.
Bibliothèques de classes portables
Avertissement
Les bibliothèques de classes portables ne sont pas recommandées. Même si elles sont prises en charge, les auteurs de packages doivent prendre en charge netstandard à la place. .NET Standard Platform est une évolution des bibliothèques de classes portables et représente la portabilité binaire entre les plateformes à l’aide d’un moniker unique qui n’est pas lié à une bibliothèque statique comme les monikers portable-a+b+c.
Pour définir une version cible de .NET Framework qui fait référence à plusieurs frameworks-cibles-enfants, le mot clé portable
est utilisé pour préfixer la liste des frameworks référencés. Évitez d’inclure artificiellement des frameworks supplémentaires qui ne sont pas directement compilés, car cela peut aboutir à des effets secondaires inattendus dans ces frameworks.
D’autres frameworks définis par des tiers assurent la compatibilité avec d’autres environnements qui sont accessibles de cette manière. De plus, il existe des numéros de profil abrégés qui sont disponibles pour faire référence à ces combinaisons de frameworks connexes en tant que Profile#
, mais l’utilisation de ces numéros n’est pas recommandée, car cela réduit la lisibilité des dossiers et de .nuspec
.
Numéro de profil | Frameworks | Nom complet | .NET Standard |
---|---|---|---|
Profile2 | .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 | |||
Profile19 | .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) |
De plus, les packages NuGet ciblant Xamarin peuvent utiliser d’autres frameworks définis par Xamarin. Consultez Création de packages NuGet pour Xamarin.
Nom | Description | .NET Standard |
---|---|---|
monoandroid | Prise en charge mono pour le système d’exploitation Android | netstandard1.4 |
monotouch | Prise en charge mono pour iOS | netstandard1.4 |
monomac | Prise en charge mono pour OSX | netstandard1.4 |
xamarinios | Prise en charge pour Xamarin pour iOS | netstandard1.4 |
xamarinmac | Prise en charge pour Xamarin pour Mac | netstandard1.4 |
xamarinpsthree | Prise en charge pour Xamarin sur Playstation 3 | netstandard1.4 |
xamarinpsfour | Prise en charge pour Xamarin sur Playstation 4 | netstandard1.4 |
xamarinpsvita | Prise en charge pour 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 |
Remarque
Stephen Cleary a créé un outil qui répertorie les bibliothèques de classes portables prises en charge, que vous pouvez trouver sur son blog, Framework profiles in .NET.