Guide pratique pour déterminer les versions du .NET Framework installées
les utilisateurs peuvent installer et exécuter plusieurs versions de .NET Framework sur leurs ordinateurs. lorsque vous développez ou déployez votre application, vous devrez peut-être connaître les versions de .NET Framework qui sont installées sur l’ordinateur de l’utilisateur. le registre contient une liste des versions de .NET Framework installées sur l’ordinateur.
Notes
Cet article est spécifique à .NET Framework. Pour déterminer les kits de développement logiciel (SDK) .NET Core et .NET 5 + et les runtimes installés, consultez Comment vérifier que .net est déjà installé.
.NET Framework se compose de deux composants principaux, dont les versions sont gérées séparément :
Un jeu d'assemblys, qui correspondent aux collections de types et de ressources qui fournissent les fonctionnalités de vos applications. .NET Framework et les assemblys partagent le même numéro de version. Par exemple, 4.5, 4.6.1 et 4.7.2 sont des versions de .NET Framework.
Le Common Language Runtime (CLR), qui gère et exécute le code de votre application. En règle générale, une version particulière du CLR prend en charge plusieurs versions du .NET Framework. Par exemple, CLR version 4.0.30319. xxxxx où xxxxx est inférieur à 42000, prend en charge .NET Framework les versions 4 à 4.5.2. la version CLR supérieure ou égale à 4.0.30319.42000 prend en charge les versions .NET Framework à partir de .NET Framework 4,6.
des outils gérés par Community sont disponibles pour vous aider à détecter les versions de .NET Framework installées :
https://github.com/jmalarcon/DotNetVersions
un outil de ligne de commande .NET Framework 2,0.
https://github.com/EliteLoser/DotNetVersionLister
Un module PowerShell 2,0.
pour plus d’informations sur la détection des mises à jour installées pour chaque version de .NET Framework, consultez comment : déterminer les mises à jour de .NET Framework installées.
Déterminer l’implémentation .NET et la version sur laquelle une application s’exécute
Vous pouvez utiliser la propriété pour rechercher la version et l' RuntimeInformation.FrameworkDescription implémentation .net sur laquelle votre application s’exécute. si l’application s’exécute sur .NET Framework, la sortie ressemble à ce qui suit :
.NET Framework 4.8.4250.0
Par comparaison, si l’application s’exécute sur .NET Core ou sur .NET 5 +, la sortie est similaire à ce qui suit :
.NET Core 3.1.9
.NET 5.0.0
détection des .NET Framework 4,5 et versions ultérieures
la version de .NET Framework (4,5 et versions ultérieures) installée sur un ordinateur est indiquée dans le registre sur HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. si la sous-clé complète est manquante, .NET Framework 4,5 ou version ultérieure n’est pas installé.
Notes
La sous-clé d’installation du .NET Framework dans le chemin d’accès du registre ne commence pas par un point.
la valeur de REG_DWORD de version dans le registre représente la version de .NET Framework installée.
Version du .NET Framework | Valeur de la mise en version |
---|---|
.NET Framework 4.5 | tous les systèmes d’exploitation Windows : 378389 |
.NET Framework 4.5.1 | sur Windows 8.1 et Windows Server 2012 R2:378675 sur tous les autres systèmes d’exploitation Windows : 378758 |
.NET Framework 4.5.2 | tous les systèmes d’exploitation Windows : 379893 |
.NET Framework 4.6 | sur Windows 10:393295 sur tous les autres systèmes d’exploitation Windows : 393297 |
.NET Framework 4.6.1 | Sur les systèmes Windows intégrant la mise à jour du 10 novembre : 394254 sur tous les autres systèmes d’exploitation Windows (y compris Windows 10) : 394271 |
.NET Framework 4.6.2 | Sur les systèmes Mise à jour anniversaire Windows 10 et Windows Server 2016 : 394802 sur tous les autres systèmes d’exploitation Windows (y compris les autres systèmes d’exploitation Windows 10) : 394806 |
.NET Framework 4.7 | Sur Windows 10 Creators Update : 460798 sur tous les autres systèmes d’exploitation Windows (y compris les autres systèmes d’exploitation Windows 10) : 460805 |
.NET Framework 4.7.1 | sur Windows 10 Fall Creators Update et Windows Server, version 1709:461308 sur tous les autres systèmes d’exploitation Windows (y compris les autres systèmes d’exploitation Windows 10) : 461310 |
.NET Framework 4.7.2 | sur Windows 10 mise à jour 2018 d’avril et Windows Server, version 1803:461808 sur tous les systèmes d’exploitation Windows autres que Windows 10 mise à jour 2018 d’avril et le serveur Windows, version 1803:461814 |
.NET Framework 4.8 | sur Mise à jour de mai 2019 de Windows 10 et Windows 10 mise à jour 2019 de novembre : 528040 sur Windows 10 mai 2020 mise à jour et Windows 10 mise à jour 2020 d’octobre et Windows 10 mise à jour de mai 2021:528372 sur Windows 11 et Windows Server 2022:528449 sur tous les autres systèmes d’exploitation Windows (y compris les autres systèmes d’exploitation Windows 10) : 528049 |
Version minimale
pour déterminer si une version minimale de .NET Framework est présente, recherchez une valeur de REG_DWORD de mise en sortie qui est supérieure ou égale à la valeur correspondante indiquée dans le tableau suivant. par exemple, si votre application s’exécute sous .NET Framework 4,8 ou une version ultérieure, testez une valeur de REG_DWORD de versionsupérieure ou égale à 528040.
Version du .NET Framework | Valeur minimale |
---|---|
.NET Framework 4.5 | 378389 |
.NET Framework 4.5.1 | 378675 |
.NET Framework 4.5.2 | 379893 |
.NET Framework 4.6 | 393295 |
.NET Framework 4.6.1 | 394254 |
.NET Framework 4.6.2 | 394802 |
.NET Framework 4.7 | 460798 |
.NET Framework 4.7.1 | 461308 |
.NET Framework 4.7.2 | 461808 |
.NET Framework 4.8 | 528040 |
Utiliser l’éditeur du Registre
À partir du menu Démarrer, choisissez Exécuter, entrez regedit, puis sélectionnez OK.
(Vous devez disposer d’informations d’identification d’administration pour exécuter regedit.)
Dans l’éditeur du Registre, ouvrez la sous-clé suivante : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. si la sous-clé complète n’est pas présente, vous n’avez pas .NET Framework 4,5 ou une version ultérieure installée.
Recherchez une entrée de REG_DWORD nommée Release. s’il existe, .NET Framework 4,5 ou version ultérieure est installé. Sa valeur correspond à une version particulière de .NET Framework. dans l’illustration suivante, par exemple, la valeur de l’entrée de version est 528040, qui est la clé de mise en version de .NET Framework 4,8.
Utiliser PowerShell pour vérifier la version minimale
Utilisez des commandes PowerShell pour vérifier la valeur de l’entrée Release de la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.
les exemples suivants vérifient la valeur de l’entrée de mise en sortie pour déterminer si .NET Framework 4.6.2 ou version ultérieure est installé. Ce code retourne True
s’il est installé et False
dans le cas contraire.
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802
Interroger le registre à l’aide de code
Utilisez les méthodes RegistryKey.OpenBaseKey et RegistryKey.OpenSubKey pour accéder à la sous-clé RegistryKey.OpenBaseKey dans le Registre Windows.
Important
si l’application que vous exécutez est 32 bits et s’exécute en Windows 64 bits, les chemins d’accès au registre sont différents de ceux indiqués précédemment. Le registre 64 bits est disponible dans la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . par exemple, la sous-clé de registre pour .NET Framework 4,5 est HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full.
Vérifiez la valeur REG_DWORD de version pour déterminer la version installée. Pour être compatible, recherchez une valeur supérieure ou égale à la valeur listée dans le tableau des versions du .NET Framework.
l’exemple suivant vérifie la valeur de l’entrée de publication dans le registre pour rechercher les versions de .NET Framework 4.5-4.8 qui sont installées.
Conseil
Ajoutez la directive using Microsoft.Win32
ou Imports Microsoft.Win32
en haut de votre fichier de code si vous ne l’avez pas déjà fait.
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{
if (ndpKey != null && ndpKey.GetValue("Release") != null)
{
Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int)ndpKey.GetValue("Release"))}");
}
else
{
Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
}
}
// Checking the version using >= enables forward compatibility.
string CheckFor45PlusVersion(int releaseKey)
{
if (releaseKey >= 528040)
return "4.8 or later";
if (releaseKey >= 461808)
return "4.7.2";
if (releaseKey >= 461308)
return "4.7.1";
if (releaseKey >= 460798)
return "4.7";
if (releaseKey >= 394802)
return "4.6.2";
if (releaseKey >= 394254)
return "4.6.1";
if (releaseKey >= 393295)
return "4.6";
if (releaseKey >= 379893)
return "4.5.2";
if (releaseKey >= 378675)
return "4.5.1";
if (releaseKey >= 378389)
return "4.5";
// This code should never execute. A non-null release key should mean
// that 4.5 or later is installed.
return "No 4.5 or later version detected";
}
Private Sub Get45PlusFromRegistry()
Const subkey As String = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"
Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)
If ndpKey IsNot Nothing AndAlso ndpKey.GetValue("Release") IsNot Nothing Then
Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion(ndpKey.GetValue("Release"))}")
Else
Console.WriteLine(".NET Framework Version 4.5 or later is not detected.")
End If
End Using
End Sub
' Checking the version using >= enables forward compatibility.
Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
If releaseKey >= 528040 Then
Return "4.8 or later"
ElseIf releaseKey >= 461808 Then
Return "4.7.2"
ElseIf releaseKey >= 461308 Then
Return "4.7.1"
ElseIf releaseKey >= 460798 Then
Return "4.7"
ElseIf releaseKey >= 394802 Then
Return "4.6.2"
ElseIf releaseKey >= 394254 Then
Return "4.6.1"
ElseIf releaseKey >= 393295 Then
Return "4.6"
ElseIf releaseKey >= 379893 Then
Return "4.5.2"
ElseIf releaseKey >= 378675 Then
Return "4.5.1"
ElseIf releaseKey >= 378389 Then
Return "4.5"
End If
' This code should never execute. A non-null release key should mean
' that 4.5 or later is installed.
Return "No 4.5 or later version detected"
End Function
L’exemple affiche une sortie similaire à ce qui suit :
.NET Framework Version: 4.6.1
Cet exemple suit la pratique recommandée concernant la vérification de version :
- Il vérifie si la valeur de l’entrée Release est supérieure ou égale à la valeur des clés de version connues.
- Il effectue sa vérification en partant de la version la plus récente vers la version la plus ancienne.
détection des .NET Framework 1,0 à 4,0
chaque version de .NET Framework de 1,1 à 4,0 est indiquée sous la forme d’une sous-clé sur HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP. le tableau suivant répertorie le chemin d’accès à chaque version de .NET Framework. Pour la plupart des versions, il existe une valeur d' installation REG_DWORD de pour indiquer que cette version est installée. Dans ces sous-clés, il y a également une valeur de REG_SZ de version qui contient une chaîne de version.
Notes
La sous-clé d’installation du .NET Framework dans le chemin d’accès du registre ne commence pas par un point.
Version du Framework | Sous-clé de Registre | Valeur |
---|---|---|
1,0 | Hklm\software\microsoft.. NETFramework\Policy\v1.0\3705 | Installer REG_SZ est égal à |
1.1 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 | Installer REG_DWORD est égal à |
2.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 | Installer REG_DWORD est égal à |
3,0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup | InstallSuccess REG_DWORD est égal à |
3,5 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 | Installer REG_DWORD est égal à |
Profil client 4,0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client | Installer REG_DWORD est égal à |
Profil complet 4,0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full | Installer REG_DWORD est égal à |
Important
si l’application que vous exécutez est 32 bits et s’exécute en Windows 64 bits, les chemins d’accès au registre sont différents de ceux indiqués précédemment. Le registre 64 bits est disponible dans la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . par exemple, la sous-clé de registre pour .NET Framework 3,5 est HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.
notez que le chemin d’accès au registre de la sous-clé .NET Framework 1,0 est différent des autres.
Utiliser l’éditeur du Registre (versions antérieures de l’infrastructure)
À partir du menu Démarrer, choisissez Exécuter, entrez regedit, puis sélectionnez OK.
Vous devez disposer d’informations d’identification d’administrateur pour exécuter regedit.
Ouvrez la sous-clé qui correspond à la version que vous souhaitez vérifier. utilisez le tableau de la section détecter les .NET Framework 1,0 à 4,0 .
l’illustration suivante montre la sous-clé et sa valeur de Version pour .NET Framework 3,5.
Interroger le registre à l’aide de code (versions antérieures du Framework)
utilisez la Microsoft.Win32.RegistryKey classe pour accéder à la sous-clé Microsoft.Win32.RegistryKey dans le registre Windows.
Important
si l’application que vous exécutez est 32 bits et s’exécute en Windows 64 bits, les chemins d’accès au registre sont différents de ceux indiqués précédemment. Le registre 64 bits est disponible dans la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . par exemple, la sous-clé de registre pour .NET Framework 3,5 est HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.
l’exemple suivant recherche les versions de .NET Framework 1-4 qui sont installées :
// Open the registry key for the .NET Framework entry.
using (RegistryKey ndpKey =
RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
{
foreach (var versionKeyName in ndpKey.GetSubKeyNames())
{
// Skip .NET Framework 4.5 version information.
if (versionKeyName == "v4")
{
continue;
}
if (versionKeyName.StartsWith("v"))
{
RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
// Get the .NET Framework version value.
var name = (string)versionKey.GetValue("Version", "");
// Get the service pack (SP) number.
var sp = versionKey.GetValue("SP", "").ToString();
// Get the installation flag.
var install = versionKey.GetValue("Install", "").ToString();
if (string.IsNullOrEmpty(install))
{
// No install info; it must be in a child subkey.
Console.WriteLine($"{versionKeyName} {name}");
}
else if (install == "1")
{
// Install = 1 means the version is installed.
if (!string.IsNullOrEmpty(sp))
{
Console.WriteLine($"{versionKeyName} {name} SP{sp}");
}
else
{
Console.WriteLine($"{versionKeyName} {name}");
}
}
if (!string.IsNullOrEmpty(name))
{
continue;
}
// else print out info from subkeys...
// Iterate through the subkeys of the version subkey.
foreach (var subKeyName in versionKey.GetSubKeyNames())
{
RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
name = (string)subKey.GetValue("Version", "");
if (!string.IsNullOrEmpty(name))
sp = subKey.GetValue("SP", "").ToString();
install = subKey.GetValue("Install", "").ToString();
if (string.IsNullOrEmpty(install))
{
// No install info; it must be later.
Console.WriteLine($"{versionKeyName} {name}");
}
else if (install == "1")
{
if (!string.IsNullOrEmpty(sp))
{
Console.WriteLine($"{subKeyName} {name} SP{sp}");
}
else
{
Console.WriteLine($" {subKeyName} {name}");
}
}
}
}
}
}
' Opens the registry key for the .NET Framework entry.
Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\")
For Each versionKeyName In ndpKey.GetSubKeyNames()
' Skip .NET Framework 4.5 and later.
If versionKeyName = "v4" Then Continue For
If versionKeyName.StartsWith("v") Then
Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName)
' Get the .NET Framework version value.
Dim name = DirectCast(versionKey.GetValue("Version", ""), String)
' Get the service pack (SP) number.
Dim sp = versionKey.GetValue("SP", "").ToString()
Dim install = versionKey.GetValue("Install", "").ToString()
If String.IsNullOrEmpty(install) Then
' No install info; it must be in a child subkey.
Console.WriteLine($"{versionKeyName} {name}")
ElseIf install = "1" Then
If Not String.IsNullOrEmpty(sp) Then
Console.WriteLine($"{versionKeyName} {name} SP{sp}")
Else
Console.WriteLine($"{versionKeyName} {name}")
End If
End If
If Not String.IsNullOrEmpty(name) Then
Continue For
End If
For Each subKeyName In versionKey.GetSubKeyNames()
Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName)
name = DirectCast(subKey.GetValue("Version", ""), String)
If Not String.IsNullOrEmpty(name) Then
sp = subKey.GetValue("SP", "").ToString()
End If
install = subKey.GetValue("Install", "").ToString()
If String.IsNullOrEmpty(install) Then
' No install info; it must be later.
Console.WriteLine($"{versionKeyName} {name}")
ElseIf install = "1" Then
If Not String.IsNullOrEmpty(sp) Then
Console.WriteLine($"{subKeyName} {name} SP{sp}")
Else
Console.WriteLine($" {subKeyName} {name}")
End If
End If
Next
End If
Next
End Using
L’exemple affiche une sortie similaire à ce qui suit :
v2.0.50727 2.0.50727.4927 SP2
v3.0 3.0.30729.4926 SP2
v3.5 3.5.30729.4926 SP1
v4.0
Client 4.0.0.0
Identifier les versions du CLR
la .NET Framework CLR installée avec .NET Framework est gérée séparément. il existe deux façons de détecter la version du .NET Framework CLR :
Outil Clrver.exe
Utilisez l' outil CLR version (Clrver.exe) pour déterminer quelles versions du CLR sont installées sur un ordinateur. ouvrez Visual Studio Invite de commandes développeur ou Visual Studio developer PowerShell et entrez .
Exemple de sortie :
Versions installed on the machine: v2.0.50727 v4.0.30319
La classe
Important
pour .NET Framework 4,5 et versions ultérieures, n’utilisez pas la Environment.Version propriété pour détecter la version du CLR. au lieu de cela, interrogez le registre comme décrit dans détecter les .NET Framework 4,5 et versions ultérieures.
Interrogez la propriété Environment.Version pour récupérer un objet Version.
L’objet
System.Version
retourné identifie la version du runtime qui est en train d’exécuter le code. Il ne retourne pas les versions d’assembly ni d’autres versions du runtime susceptibles d’avoir été installées sur l’ordinateur.pour les versions .NET Framework 4, 4,5, 4.5.1 et 4.5.2, la représentation sous forme de chaîne de l’objet retourné Version se présente sous la forme 4.0.30319.Version, où xxxxx est inférieur à 42000. pour .NET Framework 4,6 et versions ultérieures, il se présente sous la forme 4.0.30319.42000.
Une fois que vous disposez de l’objet de version , interrogez-le comme suit :
Pour l’identificateur de la version majeure (par exemple, 4 pour la version 4.0), utilisez la propriété .
Pour l’identificateur de la version mineure (par exemple, 0 pour la version 4.0), utilisez la propriété .
Pour la chaîne de la version entière (par exemple, 4.0.30319.18010), utilisez la méthode . Cette méthode retourne une valeur unique qui reflète la version du runtime qui est en train d’exécuter le code. Elle ne retourne pas les versions d’assembly ni d’autres versions du runtime susceptibles d’être installées sur l’ordinateur.
L’exemple suivant utilise la propriété Environment.Version pour récupérer les informations de version du CLR :
Console.WriteLine($"Version: {Environment.Version}");
Console.WriteLine($"Version: {Environment.Version}")
L’exemple affiche une sortie similaire à ce qui suit :
Version: 4.0.30319.18010