Como: Determinar quais versões do .NET Framework estão instaladasHow to: Determine which .NET Framework versions are installed

Os usuários podem instalar e executar várias versões do .NET Framework em seus computadores.Users can install and run multiple versions of the .NET Framework on their computers. Quando você desenvolve ou implanta um aplicativo, é necessário saber qual versão do .NET Framework está instalada no computador do usuário.When you develop or deploy your app, you might need to know which .NET Framework versions are installed on the user’s computer.

O .NET Framework consiste em dois componentes principais, que têm o controle de versão feito separadamente:The .NET Framework consists of two main components, which are versioned separately:

  • Um conjunto de assemblies que são coleções de tipos e recursos que fornecem a funcionalidade para os aplicativos.A set of assemblies, which are collections of types and resources that provide the functionality for your apps. O .NET Framework e assemblies que compartilham o mesmo número de versão.The .NET Framework and assemblies share the same version number.

  • O Common Language Runtime (CLR) que gerencia e executa o código dos aplicativos.The common language runtime (CLR), which manages and executes your app's code. O CLR é identificado pelo seu próprio número de versão (confira Versões e dependências).The CLR is identified by its own version number (see Versions and Dependencies).

Observação

Cada nova versão do .NET Framework retém recursos de versões anteriores e adiciona novos recursos.Each new version of the .NET Framework retains features from the previous versions and adds new features. Você pode carregar várias versões do .NET Framework em um único computador ao mesmo tempo, o que significa que você pode instalar o .NET Framework sem precisar desinstalar as versões anteriores.You can load multiple versions of the .NET Framework on a single computer at the same time, which means that you can install the .NET Framework without having to uninstall previous versions. Em geral, você não deve desinstalar as versões anteriores do .NET Framework, porque um aplicativo que você usa pode depender de uma versão específica e pode ser interrompido caso essa versão seja removida.In general, you shouldn't uninstall previous versions of the .NET Framework, because an application you use may depend on a specific version and may break if that version is removed.

Há uma diferença entre a versão do .NET Framework e a versão do CLR:There is a difference between the .NET Framework version and the CLR version:

  • A versão do .NET Framework baseia-se no conjunto de assemblies que forma a biblioteca de classes .NET Framework.The .NET Framework version is based on the set of assemblies that form the .NET Framework class library. Por exemplo, versões do .NET Framework incluem 4.5, 4.6.1 e 4.7.2.For example, .NET Framework versions include 4.5, 4.6.1, and 4.7.2.
  • A versão do CLR baseia-se no tempo de execução no qual os aplicativos .NET Framework são executados.The CLR version is based on the runtime on which .NET Framework applications execute. Uma única versão do CLR geralmente dá suporte a várias versões do .NET Framework.A single CLR version typically supports multiple .NET Framework versions. Por exemplo, o CLR versão 4.0.30319.xxxxx dá suporte ao .NET Framework versões 4 a 4.5.2; o CLR versão 4.0.30319.42000 dá suporte a versões do .NET Framework que começam no .NET Framework 4.6.For example, CLR version 4.0.30319.xxxxx supports .NET Framework versions 4 through 4.5.2 and CLR version 4.0.30319.42000 supports .NET Framework versions starting with .NET Framework 4.6.

Para obter mais informações sobre as versões, confira Versões e dependências do .NET Framework.For more information about versions, see .NET Framework versions and dependencies.

Para obter uma lista das versões do .NET Framework instaladas em um computador, acesse o Registro.To get a list of the .NET Framework versions installed on a computer, you access the registry. Use o Editor do Registro para exibir o Registro ou use o código para consultá-lo:You can either use the Registry Editor to view the registry or use code to query it:

Para obter uma lista das versões do CLR instaladas em um computador, use uma ferramenta ou o código:To get a list of the CLR versions installed on a computer, use a tool or code:

Para obter informações sobre como detectar as atualizações instaladas para cada versão do .NET Framework, confira Como: Determinar quais atualizações do .NET Framework estão instaladas.For information about detecting the installed updates for each version of the .NET Framework, see How to: Determine which .NET Framework updates are installed.

Encontrar versões mais recentes do .NET Framework (4.5 e posterior)Find newer .NET Framework versions (4.5 and later)

Encontrar versões 4.5 do .NET Framework no RegistroFind .NET Framework versions 4.5 and later in the registry

  1. No menu Iniciar, escolha Executar, insira regedit e, em seguida, selecione OK.From the Start menu, choose Run, enter regedit, and then select OK.

    Você precisará ter credenciais administrativas para executar o REGEDIT.You must have administrative credentials to run regedit.

  2. No Editor do Registro, abrir a seguinte subchave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.In the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Se a subchave Full não estiver presente, você não terá o .NET Framework 4.5 ou posterior instalado.If the Full subkey isn't present, then you don't have the .NET Framework 4.5 or later installed.

    Observação

    A pasta NET Framework Setup no Registro não começa com um ponto.The NET Framework Setup folder in the registry does not begin with a period.

  3. Verifique se há uma entrada DWORD chamada Release.Check for a DWORD entry named Release. Se ela existir, você terá o .NET Framework 4.5 ou posterior instalado.If it exists, then you have .NET Framework 4.5 or later versions installed. Seu valor é uma chave de versão que corresponde a uma versão específica do .NET Framework.Its value is a release key that corresponds to a particular version of the .NET Framework. Na figura a seguir, por exemplo, o valor da entrada Release é 378389, que é a chave de versão do .NET Framework 4.5.In the following figure, for example, the value of the Release entry is 378389, which is the release key for .NET Framework 4.5.

    Entrada do Registro para o .NET Framework 4.5Registry entry for the .NET Framework 4.5

A tabela a seguir lista o valor de Release DWORD em cada sistema operacional individual para o .NET Framework 4.5 e versões posteriores.The following table lists the value of the Release DWORD on individual operating systems for .NET Framework 4.5 and later versions.

Importante

A tabela a seguir lista apenas as chaves de versões lançadas do .NET Framework.The following table lists the keys of released versions of the .NET Framework only. Ela não lista as chaves de versão prévia ou versões de pré-lançamento.It doesn't list the keys of preview or pre-release versions.

Versão do .NET Framework.NET Framework version Valor da liberação de DWORDValue of the Release DWORD
.NET Framework 4.5.NET Framework 4.5 Todos os sistemas operacionais Windows: 378389All Windows operating systems: 378389
.NET Framework 4.5.1.NET Framework 4.5.1 No Windows 8.1 e Windows Server 2012 R2: 378675On Windows 8.1 and Windows Server 2012 R2: 378675
Em todos os outros sistemas operacionais Windows: 378758On all other Windows operating systems: 378758
.NET Framework 4.5.2.NET Framework 4.5.2 Todos os sistemas operacionais Windows: 379893All Windows operating systems: 379893
.NET Framework 4.6.NET Framework 4.6 No Windows 10: 393295On Windows 10: 393295
Em todos os outros sistemas operacionais Windows: 393297On all other Windows operating systems: 393297
.NET Framework 4.6.1.NET Framework 4.6.1 Em sistemas com a Atualização de novembro do Windows 10: 394254On Windows 10 November Update systems: 394254
Em todos os outros sistemas operacionais Windows (incluindo o Windows 10): 394271On all other Windows operating systems (including Windows 10): 394271
.NET Framework 4.6.2.NET Framework 4.6.2 Na Atualização de Aniversário do Windows 10 e no Windows Server 2016: 394802On Windows 10 Anniversary Update and Windows Server 2016: 394802
Em todos os outros sistemas operacionais Windows (incluindo outros sistemas operacionais Windows 10): 394806On all other Windows operating systems (including other Windows 10 operating systems): 394806
.NET Framework 4.7.NET Framework 4.7 No Windows 10 Creators Update: 460798On Windows 10 Creators Update: 460798
Em todos os outros sistemas operacionais Windows (incluindo outros sistemas operacionais Windows 10): 460805On all other Windows operating systems (including other Windows 10 operating systems): 460805
.NET Framework 4.7.1.NET Framework 4.7.1 No Windows 10 Fall Creators Update e Windows Server, versão 1709: 461308On Windows 10 Fall Creators Update and Windows Server, version 1709: 461308
Em todos os outros sistemas operacionais Windows (incluindo outros sistemas operacionais Windows 10): 461310On all other Windows operating systems (including other Windows 10 operating systems): 461310
.NET Framework 4.7.2.NET Framework 4.7.2 Na Atualização de abril de 2018 do Windows 10 e no Windows Server, versão 1803: 461808On Windows 10 April 2018 Update and Windows Server, version 1803: 461808
Em todos os sistemas operacionais Windows diferentes da Atualização de abril de 2018 do Windows 10 e do Windows Server, versão 1803: 461814On all Windows operating systems other than Windows 10 April 2018 Update and Windows Server, version 1803: 461814

Use esses valores da seguinte maneira:You can use these values as follows:

  • Para determinar se uma versão específica do .NET Framework está instalada em uma versão específica do sistema operacional Windows, teste se o valor de Release DWORD é igual ao valor listado na tabela.To determine whether a specific version of the .NET Framework is installed on a particular version of the Windows operating system, test whether the Release DWORD value is equal to the value listed in the table. Por exemplo, para determinar se o .NET Framework 4.6 está presente em um sistema Windows 10, teste o valor de Release que é igual a 393295.For example, to determine whether .NET Framework 4.6 is present on a Windows 10 system, test for the a Release value that is equal to 393295.

  • Para determinar se uma versão mínima do .NET Framework está presente, use o menor valor de RELEASE DWORD para essa versão.To determine whether a minimum version of the .NET Framework is present, use the smaller RELEASE DWORD value for that version. Por exemplo, se seu aplicativo for executado no .NET Framework 4.6 ou em uma versão posterior, teste um valor de RELEASE DWORD que seja maior ou igual a 393295.For example, if your application runs under .NET Framework 4.6 or a later version, test for a RELEASE DWORD value that is greater than or equal to 393295. Para uma tabela que lista apenas o valor mínimo de RELEASE DWORD para cada versão do .NET Framework, confira Os valores mínimos da Versão DWORD para .NET Framework 4.5 e versões posteriores.For a table that lists only the minimum RELEASE DWORD value for each .NET Framework version, see The minimum values of the Release DWORD for .NET Framework 4.5 and later versions.

  • Para testar várias versões, comece testando um valor que seja maior ou igual ao menor valor de DWORD da versão mais recente do .NET Framework e compare o valor com o menor valor de DWORD para cada versão anterior.To test for multiple versions, begin by testing for a value that is greater than or equal to the smaller DWORD value for the latest .NET Framework version, and then compare the value with the smaller DWORD value for each successive earlier version. Por exemplo, se seu aplicativo exigir o .NET Framework 4.7 ou posterior e você quiser determinar a versão específica atual do .NET Framework, comece testando um valor de RELEASE DWORD que seja maior ou igual a 461808 (o menor valor de DWORD para o .NET Framework 4.7.2).For example, if your application requires .NET Framework 4.7 or later and you want to determine the specific version of .NET Framework present, start by testing for a RELEASE DWORD value that is great than or equal to to 461808 (the smaller DWORD value for .NET Framework 4.7.2). Em seguida, compare o valor de RELEASE DWORD com o menor valor para cada versão posterior do .NET Framework.Then compare the RELEASE DWORD value with the smaller value for each later .NET Framework version. Para uma tabela que lista apenas o valor mínimo de RELEASE DWORD para cada versão do .NET Framework, confira Os valores mínimos da Versão DWORD para .NET Framework 4.5 e versões posteriores.For a table that lists only the minimum RELEASE DWORD value for each .NET Framework version, see The minimum values of the Release DWORD for .NET Framework 4.5 and later versions.

Encontrar versões 4.5 e posteriores do .NET Framework com códigoFind .NET Framework versions 4.5 and later with code

  1. Use os métodos RegistryKey.OpenBaseKey e RegistryKey.OpenSubKey para acessar a subchave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full no Registro do Windows.Use the RegistryKey.OpenBaseKey and RegistryKey.OpenSubKey methods to access the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey in the Windows registry.

    A existência da entrada DWORD Release na subchave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full indica que o .NET Framework 4.5 ou posterior está instalado em um computador.The existence of the Release DWORD entry in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey indicates that the .NET Framework 4.5 or a later version is installed on a computer.

  2. Verifique o valor da entrada Release para determinar a versão instalada.Check the value of the Release entry to determine the installed version. Para compatibilidade com a versão atual, verifique se há um valor superior ou igual ao valor listado na tabela de versões do .NET Framework.To be forward-compatible, check for a value greater than or equal to the value listed in the .NET Framework version table.

O seguinte exemplo verifica o valor da entrada Release no Registro para encontrar o .NET Framework 4.5 e versões posteriores que estão instaladas:The following example checks the value of the Release entry in the registry to find the .NET Framework 4.5 and later versions that are installed:

using System;
using Microsoft.Win32;

public class GetDotNetVersion
{
   public static void Main()
   {
      Get45PlusFromRegistry();
   }

   private static void Get45PlusFromRegistry()
   {
      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";
      }
   }
}   
// This example displays output like the following:
//       .NET Framework Version: 4.6.1
Imports Microsoft.Win32

Public Module GetDotNetVersion
   Public Sub Main()
      Get45PlusFromRegistry()
   End Sub

   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 
            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 >= will enable forward compatibility.
   Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
      If releaseKey >= 528040 Then
         Return "4.8 or later"
      Else If releaseKey >= 461808 Then
         Return "4.7.2" 
      Else If releaseKey >= 461308 Then
         Return "4.7.1"
      Else If releaseKey >= 460798 Then
         Return "4.7"
      Else If releaseKey >= 394802 Then
         Return "4.6.2"
      Else If releaseKey >= 394254 Then 
         Return "4.6.1"
      Else If releaseKey >= 393295 Then
         Return "4.6"
      Else If releaseKey >= 379893 Then
         Return "4.5.2"
      Else If releaseKey >= 378675 Then
         Return "4.5.1"
      Else If 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
End Module   
' The example displays output like the following:
'       .NET Framework Version: 4.6.1

Este exemplo segue a prática recomendada para a verificação de versão:This example follows the recommended practice for version checking:

  • Ele verifica se o valor da entrada Release é superior ou igual ao valor das chaves de versão conhecidas.It checks whether the value of the Release entry is greater than or equal to the value of the known release keys.

  • Ele verifica na ordem da versão mais recente para a versão mais antiga.It checks in order from most recent version to earliest version.

Verificar se há uma versão mínima necessária do .NET Framework (4.5 e posterior) com o PowerShellCheck for a minimum-required .NET Framework version (4.5 and later) with PowerShell

  • Use comandos do PowerShell para verificar o valor da entrada Release da subchave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.Use PowerShell commands to check the value of the Release entry of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey.

Os exemplos a seguir verificam o valor da entrada Release para determinar se o .NET Framework 4.6.2 ou posterior está instalado.The following examples check the value of the Release entry to determine whether the .NET Framework 4.6.2 or later is installed. Esse código retornará True se ele estiver instalado; caso contrário, retornará False.This code returns True if it's installed and False otherwise.

# PowerShell 5
 Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' |  Get-ItemPropertyValue -Name Release | Foreach-Object { $_ -ge 394802 } 
# PowerShell 4
(Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

Para verificar se há uma versão mínima necessária do .NET Framework, substitua 394802 nesses exemplos por um valor de Release da tabela de versões do .NET Framework.To check for a different minimum-required .NET Framework version, replace 394802 in these examples with a Release value from the .NET Framework version table.

Encontrar versões mais antigas do .NET Framework (1–4)Find older .NET Framework versions (1–4)

Encontrar as versões 1–4 do .NET Framework no RegistroFind .NET Framework versions 1–4 in the registry

  1. No menu Iniciar, escolha Executar, insira regedit e, em seguida, selecione OK.From the Start menu, choose Run, enter regedit, and then select OK.

    Você precisará ter credenciais administrativas para executar o REGEDIT.You must have administrative credentials to run regedit.

  2. No Editor do Registro, abrir a seguinte subchave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:In the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:

    • Para as versões 1.1 a 3.5 do .NET Framework, cada versão instalada é listada como uma subchave na subchave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP.For .NET Framework versions 1.1 through 3.5, each installed version is listed as a subkey under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP subkey. Por exemplo, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5.For example, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5. O número de versão é armazenado como um valor na entrada Version da subchave da versão.The version number is stored as a value in the version subkey's Version entry.

    • Para o .NET Framework 4, a entrada Version está localizada na subchave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client, na subchave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full ou em ambas as subchaves.For .NET Framework 4, the Version entry is under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client subkey, the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full subkey, or under both subkeys.

    Observação

    A pasta NET Framework Setup no Registro não começa com um ponto.The NET Framework Setup folder in the registry does not begin with a period.

    A figura a seguir mostra a subchave e sua entrada Version para o .NET Framework 3.5.The following figure shows the subkey and its Version entry for the .NET Framework 3.5.

    A entrada do Registro para o .NET Framework 3.5.The registry entry for the .NET Framework 3.5.

Encontrar as versões 1–4 do .NET Framework com o códigoFind .NET Framework versions 1–4 with code

  • Use a classe Microsoft.Win32.RegistryKey para acessar a subchave HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP no Registro do Windows.Use the Microsoft.Win32.RegistryKey class to access the HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP subkey in the Windows registry.

O seguinte exemplo localiza as versões 1–4 do .NET Framework que estão instaladas:The following example finds the .NET Framework 1–4 versions that are installed:

using Microsoft.Win32;
using System;

public static class VersionTest
{
    public static void Main()
    {
        GetVersionFromRegistry();
    }
    
    private static void GetVersionFromRegistry()
    {
        // Opens 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, or an empty string if there is none.
                    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 (!(string.IsNullOrEmpty(sp)) && install == "1")
                        {
                            Console.WriteLine($"{versionKeyName}  {name}  SP{sp}");
                        }
                    }
                    if (! string.IsNullOrEmpty(name))
                    {
                        continue;
                    }
                    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 (!(string.IsNullOrEmpty(sp )) && install == "1")
                            {
                                Console.WriteLine($"{subKeyName}  {name}  SP{sp}");
                            }
                            else if (install == "1")
                            {
                                Console.WriteLine($"  {subKeyName}  {name}");
                            }
                        }
                    }
                }
            }
        }
    }
}
// The example displays output similar to the following:
//        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
Imports Microsoft.Win32

Public Module VersionTest
    Public Sub Main()
        GetVersionFromRegistry()
    End Sub
    
    Private Sub GetVersionFromRegistry()

        ' 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}")
                    Else
                        If Not String.IsNullOrEmpty(sp) AndAlso install = "1" Then
                            Console.WriteLine($"{versionKeyName}  {name}  SP{sp}")
                        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}")
                        Else
                            If Not String.IsNullOrEmpty(sp) AndAlso install = "1" Then
                                Console.WriteLine($"{subKeyName}  {name}  SP{sp}")
                            ElseIf install = "1" Then
                                Console.WriteLine($"  {subKeyName}  {name}")
                            End If
                        End If
                    Next
                End If
            Next
        End Using
    End Sub
End Module
' The example displays output similar to the following:
'        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

Encontrar versões do CLRFind CLR versions

Localizar a versão atual do CLR com Clrver.exeFind the current CLR version with Clrver.exe

Use a ferramenta de Versão do CLR (Clrver.exe) para determinar quais versões do CLR estão instaladas em um computador:Use the CLR Version tool (Clrver.exe) to determine which versions of the CLR are installed on a computer:

Localizar a versão atual do CLR com a classe EnvironmentFind the current CLR version with the Environment class

Importante

Para o .NET Framework 4.5 e versões posteriores, não use a propriedade Environment.Version para detectar a versão do CLR.For the .NET Framework 4.5 and later versions, don't use the Environment.Version property to detect the version of the CLR. Em vez disso, consulte o Registro, conforme descrito em Encontrar versões 4.5 e posteriores do .NET Framework com o código.Instead, query the registry as described in Find .NET Framework versions 4.5 and later with code.

  1. Consulte a propriedade Environment.Version para recuperar um objeto Version.Query the Environment.Version property to retrieve a Version object.

    O objeto System.Version retornado identifica a versão do tempo de execução que está executando o código.The returned System.Version object identifies the version of the runtime that's currently executing the code. Ele não retorna versões de assembly nem outras versões do tempo de execução que possam ter sido instaladas no computador.It doesn't return assembly versions or other versions of the runtime that may have been installed on the computer.

    Para as versões 4, 4.5, 4.5.1 e 4.5.2 do .NET Framework, a representação de cadeia de caracteres do objeto Version retornado tem o formato 4.0.30319.xxxxx.For the .NET Framework versions 4, 4.5, 4.5.1, and 4.5.2, the string representation of the returned Version object has the form 4.0.30319.xxxxx. Para o .NET Framework 4.6 e versões posteriores, ele tem o formato 4.0.30319.42000.For the .NET Framework 4.6 and later versions, it has the form 4.0.30319.42000.

  2. Depois de ter o objeto Version, consulte-o da seguinte maneira:After you have the Version object, query it as follows:

    • Para o identificador de versão principal (por exemplo, 4 para a versão 4.0), use a propriedade Version.Major.For the major release identifier (for example, 4 for version 4.0), use the Version.Major property.

    • Para o identificador de versão secundária (por exemplo, 0 para a versão 4.0), use a propriedade Version.Minor.For the minor release identifier (for example, 0 for version 4.0), use the Version.Minor property.

    • Para a cadeia de caracteres de versão inteira (por exemplo, 4.0.30319.18010), use o método Version.ToString.For the entire version string (for example, 4.0.30319.18010), use the Version.ToString method. Esse método retorna um único valor que reflete a versão do tempo de execução que está executando o código.This method returns a single value that reflects the version of the runtime that's executing the code. Ele não retorna versões de assembly nem outras versões do tempo de execução que possam ter sido instaladas no computador.It doesn't return assembly versions or other runtime versions that may be installed on the computer.

O seguinte exemplo usa a propriedade Environment.Version para recuperar informações de versão do CLR:The following example uses the Environment.Version property to retrieve CLR version information:

using System;

public class VersionTest
{
    public static void Main()
    {
        Console.WriteLine($"Version: {Environment.Version}");
    }
}
// The example displays output similar to the following:'
//    Version: 4.0.30319.18010
Imports Microsoft.Win32

Public Module VersionTest
   Public Sub Main()
      GetVersionFromEnvironment()
   End Sub
   
    Private Sub GetVersionFromEnvironment()
        Console.WriteLine($"Version: {Environment.Version}")
    End Sub
End Module
' The example displays output similiar to the following:'
'    Version: 4.0.30319.18010

Consulte tambémSee also