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. xxxxxxxxxx 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 :

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 RuntimeInformation.FrameworkDescription propriété pour rechercher la version et l’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 listée dans le registre à l’adresse HKEY_LOCAL_MACHINE \ logiciel \ Microsoft \ NET Framework installation \ 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 version supé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

  1. À 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.)

  2. Dans l’éditeur du Registre, ouvrez la sous-clé suivante : HKEY_LOCAL_MACHINE \ logiciel \ Microsoft \ NET Framework installation \ 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.

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

    entrée de registre pour .NET Framework 4,5

<a name="use-powershell-to-check-for-a-minimum-version">Utiliser PowerShell pour vérifier la version minimale

Utilisez les commandes PowerShell pour vérifier la valeur de l’entrée de publication de l’HKEY_LOCAL_MACHINE sous-clé complète de l' installation du \ logiciel \ Microsoft \ NET Framework, \ NDP \ v4 \ .

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 &quot;HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

Interroger le registre à l’aide de code

  1. utilisez les RegistryKey.OpenBaseKey RegistryKey.OpenSubKey méthodes et pour accéder à la sous-clé complète de la HKEY_LOCAL_MACHINE \ logiciel \ Microsoft \ NET Framework Setup \ NDP \ v4 \ 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 \ logiciel \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v4 \ complet.

  2. 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é dans HKEY_LOCAL_MACHINE \ logiciel \ 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 1 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 \ . \Stratégie NETFramework \ v 1.0 \ 3705 Installer REG_SZ est égal à 1
1.1 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v 1.1.4322 Installer REG_DWORD est égal à 1
2.0 HKLM \ Software \ Microsoft \ .NET Framework Setup \ NDP \ v 2.0.50727 Installer REG_DWORD est égal à 1
3.0 HKLM \ Software \ Microsoft \ .NET Framework Setup \ NDP \ v 3.0 \ installation InstallSuccess REG_DWORD est égal à 1
3,5 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v 3.5 Installer REG_DWORD est égal à 1
Profil client 4,0 HKLM \ Software \ Microsoft \ .NET Framework installation de \ NDP \ v4 \ client Installer REG_DWORD est égal à 1
Profil complet 4,0 HKLM version du \ \ \ programme d’installation de Microsoft NET Framework, \ NDP \ v4 \ complet Installer REG_DWORD est égal à 1

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 \ logiciel \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v 3.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)

  1. À 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.

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

    entrée de registre 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é \ \ NDP du \ programme d’installation \ de HKEY_LOCAL_MACHINE logiciel Microsoft NET Framework 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 \ logiciel \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v 3.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 clrver .

    Exemple de sortie :

    Versions installed on the machine:
    v2.0.50727
    v4.0.30319
    
  • La Environment 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.

    1. 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' Version objet retourné se présente sous la forme 4.0.30319.xxxxx, 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.

    2. 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é Version.Major.

      • Pour l’identificateur de la version mineure (par exemple, 0 pour la version 4.0), utilisez la propriété Version.Minor.

      • Pour la chaîne de la version entière (par exemple, 4.0.30319.18010), utilisez la méthode Version.ToString. 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
    

Voir aussi