Como determinar quais versões do .NET Framework estão instaladas

os usuários podem instalar e executar várias versões do .NET Framework em seus computadores. ao desenvolver ou implantar seu aplicativo, talvez seja necessário saber quais versões do .NET Framework estão instaladas no computador do usuário. o registro contém uma lista das versões do .NET Framework instaladas no computador.

Observação

Este artigo é específico para .NET Framework. Para determinar qual .NET Core e .NET 5 + SDKs e tempos de execução estão instalados, consulte como verificar se o .net já está instalado.

.NET Framework consiste em dois componentes principais, que têm a versão separada:

  • Um conjunto de assemblies que são coleções de tipos e recursos que fornecem a funcionalidade para os aplicativos. .NET Framework e os assemblies compartilham o mesmo número de versão. Por exemplo, versões do .NET Framework incluem 4.5, 4.6.1 e 4.7.2.

  • O Common Language Runtime (CLR) que gerencia e executa o código dos aplicativos. Uma única versão do CLR geralmente dá suporte a várias versões do .NET Framework. Por exemplo, o CLR versão 4.0.30319. xxxxx em que xxxxx é menor que 42000, dá suporte a .NET Framework versões 4 por meio de 4.5.2. a versão do CLR maior ou igual ao 4.0.30319.42000 dá suporte a versões .NET Framework a partir do .NET Framework 4,6.

as ferramentas mantidas Community estão disponíveis para ajudar a detectar quais versões do .NET Framework estão instaladas:

para obter informações sobre como detectar as atualizações instaladas para cada versão do .NET Framework, consulte como: determinar quais .NET Framework atualizações estão instaladas.

Determinar a implementação e a versão do .NET em que um aplicativo está em execução

Você pode usar a RuntimeInformation.FrameworkDescription propriedade para consultar a implementação e a versão do .net em que seu aplicativo está sendo executado. se o aplicativo estiver em execução no .NET Framework, a saída será semelhante a:

.NET Framework 4.8.4250.0

Por comparação, se o aplicativo estiver em execução no .NET Core ou no .NET 5 +, a saída será semelhante a:

.NET Core 3.1.9
.NET 5.0.0

detectar .NET Framework 4,5 e versões posteriores

a versão do .NET Framework (4,5 e posterior) instalada em um computador está listada no registro em HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Full. se a subchave completa estiver ausente, .NET Framework 4,5 ou superior não estará instalado.

Observação

A subchave de instalação do NET Framework no caminho do registro não começa com um ponto.

o valor da versão REG_DWORD no registro representa a versão do .NET Framework instalado.

Versão do .NET Framework Valor da versão
.NET Framework 4.5 todos os sistemas operacionais Windows: 378389
.NET Framework 4.5.1 em Windows 8.1 e Windows Server 2012 R2:378675
em todos os outros sistemas operacionais Windows: 378758
.NET Framework 4.5.2 todos os sistemas operacionais Windows: 379893
.NET Framework 4.6 em Windows 10:393295
em todos os outros sistemas operacionais Windows: 393297
.NET Framework 4.6.1 Em sistemas com a Atualização de novembro do Windows 10: 394254
em todos os outros sistemas operacionais Windows (incluindo Windows 10): 394271
.NET Framework 4.6.2 Na Atualização de Aniversário do Windows 10 e Windows Server 2016: 394802
em todos os outros sistemas operacionais Windows (incluindo outros sistemas operacionais Windows 10): 394806
.NET Framework 4.7 No Windows 10 Creators Update: 460798
em todos os outros sistemas operacionais Windows (incluindo outros sistemas operacionais Windows 10): 460805
.NET Framework 4.7.1 em Windows 10 Fall Creators Update e Windows Server, versão 1709:461308
em todos os outros sistemas operacionais Windows (incluindo outros sistemas operacionais Windows 10): 461310
.NET Framework 4.7.2 em Windows 10 atualização de abril de 2018 e Windows Server, versão 1803:461808
em todos os sistemas operacionais Windows diferentes de Windows 10 atualização de abril de 2018 e Windows Server, versão 1803:461814
.NET Framework 4.8 em Atualização de maio de 2019 para o Windows 10 e Windows 10 atualização de novembro de 2019:528040
em Windows 10 maio 2020 atualização e Windows 10 atualização de outubro de 2020 e Windows 10 pode atualizar a 2021:528372
no Windows 11 e no Windows Server 2022:528449
em todos os outros sistemas operacionais Windows (incluindo outros sistemas operacionais Windows 10): 528049

Versão mínima

para determinar se uma versão mínima do .NET Framework está presente, verifique uma versão REG_DWORD valor que seja maior ou igual ao valor correspondente listado na tabela a seguir. por exemplo, se seu aplicativo for executado em .NET Framework 4,8 ou em uma versão posterior, teste para obter uma versão REG_DWORD valor maior ou igual a 528040.

Versão do .NET Framework Valor mínimo
.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

Usar o editor do registro

  1. No menu Iniciar, escolha Executar, insira regedit e, em seguida, selecione OK.

    (Você deve ter credenciais administrativas para executar o regedit.)

  2. No editor do registro, abra a seguinte subchave: HKEY_LOCAL_MACHINE \ software \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Full. se a subchave completa não estiver presente, você não terá .NET Framework 4,5 ou posterior instalado.

  3. Verifique se há uma entrada de REG_DWORD chamada versão. se ele existir, você terá .NET Framework 4,5 ou posterior instalado. Seu valor corresponde a uma versão específica do .NET Framework. na figura a seguir, por exemplo, o valor da entrada de versão é 528040, que é a chave de versão para .NET Framework 4,8.

    entrada de registro para .NET Framework 4,5

<a name="use-powershell-to-check-for-a-minimum-version">Usar o PowerShell para verificar se há uma versão mínima

Use os comandos do PowerShell para verificar o valor da entrada de versão do HKEY_LOCAL_MACHINE \ software \ Microsoft \ NET Framework Setup \ NDP \ v4 \ completa subkey.

os exemplos a seguir verificam o valor da entrada de versão para determinar se .NET Framework 4.6.2 ou posterior está instalado. Esse código retornará True se ele estiver instalado; caso contrário, retornará False.

(Get-ItemProperty &quot;HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

Consultar o registro usando código

  1. Use os RegistryKey.OpenBaseKey métodos e para acessar a RegistryKey.OpenSubKey sub-chave \ \ \ \ NDP \ v4 \ Full da instalação HKEY_LOCAL_MACHINE SOFTWARE MICROSOFT NET Framework no Windows registro.

    Importante

    Se o aplicativo que você está executando for de 32 bits e estiver em execução em um Windows de 64 bits, os caminhos do Registro serão diferentes dos listados anteriormente. O registro de 64 bits está disponível na subkey HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node. \ Por exemplo, a sub-chave do Registro para .NET Framework 4.5 é HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Nãode Instalação do \ Microsoft NET Framework \ \ NDP \ v4 \ Full.

  2. Verifique o valor REG_DWORD versão para determinar a versão instalada. 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.

O exemplo a seguir verifica o valor da entrada Versão no Registro para encontrar as versões do .NET Framework 4.5-4.8 instaladas.

Dica

Adicione a diretiva using Microsoft.Win32 ou na parte superior do arquivo de Imports Microsoft.Win32 código, caso ainda não tenha feito isso.

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

O exemplo exibe uma saída como a seguinte:

.NET Framework Version: 4.6.1

Este exemplo segue a prática recomendada para a verificação de versão:

  • Ele verifica se o valor da entrada Release é superior ou igual ao valor das chaves de versão conhecidas.
  • Ele verifica na ordem da versão mais recente para a versão mais antiga.

Detectar .NET Framework 1,0 a 4.0

Cada versão do .NET Framework de 1.1 a 4.0 é listada como uma sub-chave em NDP de instalação do Software Microsoft NET Framework \ \ \ \ do HKEY_LOCAL_MACHINE. A tabela a seguir lista o caminho para cada .NET Framework versão. Para a maioria das versões, há um valor install REG_DWORD para indicar que esta versão 1 está instalada. Nessas sub-chaves, também há um valor de versão REG_SZ que contém uma cadeia de caracteres de versão.

Observação

A sub-chave de Instalação do NET Framework no caminho do Registro não começa com um ponto.

Versão do Framework Sub-chave do Registro Valor
1.0 HKLM \ Software \ Microsoft \ . NETFramework \ Policy \ v1.0 \ 3705 Instalar REG_SZ igual a 1
1,1 Instalação do Software HKLM \ \ Microsoft NET Framework \ \ NDP \ v1.1.4322 Instalar REG_DWORD igual a 1
2,0 Instalação do Software HKLM \ \ Microsoft NET Framework \ \ NDP \ v2.0.50727 Instalar REG_DWORD igual a 1
3.0 Instalação do \ \ \ \ NDP \ v3.0 \ do Microsoft NET Framework do Software HKLM InstallSuccess REG_DWORD igual a 1
3,5 Instalação do Software HKLM \ \ Microsoft NET Framework \ \ NDP \ v3.5 Instalar REG_DWORD igual a 1
4.0 Perfil do Cliente Cliente \ \ \ \ NDP \ v4 \ de instalação do Microsoft NET Framework do Software HKLM Instalar REG_DWORD igual a 1
4.0 Perfil completo Instalação do Software HKLM \ \ Microsoft NET Framework \ \ NDP \ v4 \ Completa Instalar REG_DWORD igual a 1

Importante

Se o aplicativo que você está executando for de 32 bits e estiver em execução em um Windows de 64 bits, os caminhos do Registro serão diferentes dos listados anteriormente. O registro de 64 bits está disponível na subkey HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node. \ Por exemplo, a sub-chave do Registro para .NET Framework 3.5 é HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Nãode Instalação do \ Microsoft NET Framework \ \ NDP \ v3.5.

Observe que o caminho do Registro para .NET Framework subkey 1.0 é diferente dos outros.

Usar o Editor do Registro (versões de estrutura mais antigas)

  1. No menu Iniciar, escolha Executar, insira regedit e, em seguida, selecione OK.

    Você precisará ter credenciais administrativas para executar o REGEDIT.

  2. Abra a sub-chave que corresponde à versão que você deseja verificar. Use a tabela na seção Detectar .NET Framework 1.0 a 4.0.

    A figura a seguir mostra a sub-chave e seu valor de Versão para .NET Framework 3.5.

    A entrada do Registro para .NET Framework 3.5.

Consultar o registro usando código (versões de estrutura mais antigas)

Use a Microsoft.Win32.RegistryKey classe para acessar a sub HKEY_LOCAL_MACHINE \ \ \ \ NDP de instalação do SOFTWARE MICROSOFT NET Framework no Windows registro.

Importante

Se o aplicativo que você está executando for de 32 bits e estiver em execução em um Windows de 64 bits, os caminhos do Registro serão diferentes dos listados anteriormente. O registro de 64 bits está disponível na subkey HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node. \ Por exemplo, a sub-chave do Registro para .NET Framework 3.5 é HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Nãode Instalação do \ Microsoft NET Framework \ \ NDP \ v3.5.

O exemplo a seguir localiza as versões .NET Framework 1 a 4 que estão instaladas:

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

O exemplo exibe uma saída semelhante à seguinte:

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 CLR

O .NET Framework CLR instalado com .NET Framework é versão separadamente. Há duas maneiras de detectar a versão do .NET Framework CLR:

  • A Clrver.exe de dados

    Use a ferramenta de versão do CLR (Clrver.exe) para determinar quais versões do CLR estão instaladas em um computador. Abra Visual Studio Prompt de Comando do Desenvolvedor ou Visual Studio Developer PowerShell e insira clrver .

    Saída de exemplo:

    Versions installed on the machine:
    v2.0.50727
    v4.0.30319
    
  • A Environment classe

    Importante

    Para .NET Framework 4.5 e versões posteriores, não use a propriedade para detectar a Environment.Version versão do CLR. Em vez disso, consulte o Registro conforme descrito em Detectar .NET Framework 4.5 e versões posteriores.

    1. Consulte a propriedade Environment.Version para recuperar um objeto Version.

      O objeto System.Version retornado identifica a versão do runtime que está executando o código. Ele não retorna versões de assembly nem outras versões do runtime que possam ter sido instaladas no computador.

      Para .NET Framework versões 4, 4.5, 4.5.1 e 4.5.2, a representação de cadeia de caracteres do objeto retornado tem o formato Version 4.0.30319.xxxxx, em que xxxxx é menor que 42000. Para .NET Framework 4.6 e versões posteriores, ele tem o formato 4.0.30319.42000.

    2. Depois de ter o objeto Version, consulte-o da seguinte forma:

      • Para o identificador de versão principal (por exemplo, 4 para a versão 4.0), use a propriedade Version.Major.

      • Para o identificador de versão secundária (por exemplo, 0 para a versão 4.0), use a propriedade Version.Minor.

      • Para a cadeia de caracteres de versão inteira (por exemplo, 4.0.30319.18010), use o método Version.ToString. Esse método retorna um único valor que reflete a versão do runtime que está executando o código. Ele não retorna versões de assembly nem outras versões do runtime que possam ter sido instaladas no computador.

    O seguinte exemplo usa a propriedade Environment.Version para recuperar informações de versão do CLR:

    Console.WriteLine($"Version: {Environment.Version}");
    
    Console.WriteLine($"Version: {Environment.Version}")
    

    O exemplo exibe uma saída semelhante à seguinte:

    Version: 4.0.30319.18010
    

Confira também