Sei sulla pagina 1di 8

Procedura: determinare le versioni di .

NET
Framework installate
.NET Framework ﴾current version﴿

 
Gli utenti possono installare ed eseguire nel computer più versioni di .NET Framework. Quando si sviluppa o si distribuisce
l'app, potrebbe essere necessario conoscere quali versioni di .NET Framework sono installate nel computer dell'utente. Si noti
che .NET Framework è costituito da due componenti principali, le cui versioni sono definite separatamente:

Un set di assembly, ovvero raccolte di tipi e risorse che forniscono la funzionalità per le app. .NET Framework e gli
assembly condividono lo stesso numero di versione.

Common Language Runtime ﴾CLR﴿, che gestisce ed esegue il codice dell'app e che viene identificato dal relativo
numero di versione ﴾vedere Versioni e dipendenze ﴾https://msdn.microsoft.com/it‐
it/library/bb822049﴾v=vs.110﴿.aspx﴿﴿.

Per ottenere un elenco accurato delle versioni di .NET Framework installate in un computer, è possibile visualizzare il Registro
di sistema o eseguire query sul Registro di sistema nel codice:

Visualizzazione del Registro di sistema ﴾versioni 1‐4﴿


Visualizzazione del Registro di sistema ﴾versione 4.5 e versioni successive﴿
Uso di codice per eseguire una query sul Registro di sistema ﴾versioni 1‐4﴿
Uso di codice per eseguire una query sul Registro di sistema ﴾versione 4.5 e versioni successive﴿

Per trovare la versione di CLR, è possibile usare uno strumento o il codice:

Uso dello strumento Clrver


Uso del codice per eseguire query sulla classe System.Environment

Per informazioni sul rilevamento degli aggiornamenti installati per ogni versione di .NET Framework, vedere Procedura:
determinare gli aggiornamenti di .NET Framework installati ﴾https://msdn.microsoft.com/it‐
it/library/hh925567﴾v=vs.110﴿.aspx﴿. Per informazioni sull'installazione di .NET Framework, vedere la Guida all'installazione
﴾https://msdn.microsoft.com/it‐it/library/5a4x27ek﴾v=vs.110﴿.aspx﴿.

Per trovare le versioni di .NET Framework visualizzando il Registro di sistema (.NET Framework 1-4)
1. Scegliere Esegui dal menu Start.

2. Nella casella Apri immettere regedit.exe.

Per eseguire regedit.exe, è necessario disporre di privilegi amministrativi.

3. Nell'Editor del Registro di sistema aprire la seguente sottochiave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

Le versioni installate sono elencate nella sottochiave NDP. Il numero di versione è archiviato nella voce Version. Per
.NET Framework 4 la voce Version è inclusa nella sottochiave Client o Full ﴾in NDP﴿ o in entrambe.

 Nota

La cartella "NET Framework Setup" nel Registro di sistema non inizia con un punto.
Per trovare le versioni di .NET Framework visualizzando il Registro di sistema (.NET Framework 4.5 e versioni
successive)
1. Scegliere Esegui dal menu Start.

2. Nella casella Apri immettere regedit.exe.

Per eseguire regedit.exe, è necessario disporre di privilegi amministrativi.

3. Nell'Editor del Registro di sistema aprire la seguente sottochiave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

Si noti che il percorso della sottochiave Full include la sottochiave Net Framework e non .NET Framework .

 Nota

Se la sottochiave Full non è presente, .NET Framework 4.5 o versione successiva non è installato.

Verificare la presenza di un valore DWORD denominato Release . L'esistenza del valore DWORD Release indica che
nel computer è stato installato .NET Framework 4.5 o una versione successiva.

Il valore DWORD Release indica quale versione di .NET Framework è installata.

Valore DWORD di Release Versione

378389 .NET Framework 4.5

378675 .NET Framework 4.5.1 installato con Windows 8.1 o Windows


Server 2012 R2

378758 .NET Framework 4.5.1 installato in Windows 8, Windows 7 SP1


o Windows Vista SP2

379893 .NET Framework 4.5.2


Valore DWORD di Release Versione

Nei sistemi Windows 10: 393295 .NET Framework 4.6

In tutte le altre versioni del sistema operativo:


393297

Nei sistemi Windows 10 con aggiornamento di .NET Framework 4.6.1


novembre: 394254

In tutte le altre versioni del sistema operativo:


394271

Per trovare le versioni di .NET Framework eseguendo query sul Registro di sistema nel codice (.NET Framework
1-4)
Usare la classe Microsoft.Win32.RegistryKey ﴾https://msdn.microsoft.com/it‐
it/library/microsoft.win32.registrykey﴾v=vs.110﴿.aspx﴿ per accedere alla sottochiave Software\Microsoft\NET
Framework Setup\NDP in HKEY_LOCAL_MACHINE nel Registro di sistema di Windows.

Nel codice seguente viene illustrato un esempio di questa query.

 Nota

Questo codice non mostra come rilevare .NET Framework 4.5 o versione successiva. Controllare il valore DWORD
Release per rilevare tali versioni, come descritto nella sezione precedente.

C#

using System; 
using Microsoft.Win32; 

C#
    private static void GetVersionFromRegistry() 
    { 
         // Opens the registry key for the .NET Framework entry. 
            using (RegistryKey ndpKey =  
                RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ""). 
                OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\")) 
            { 
                // As an alternative, if you know the computers you will query are run
ning .NET Framework 4.5  
                // or later, you can use: 
                // using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.Lo
calMachine,  
                // RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framew
ork Setup\NDP\")) 
            foreach (string versionKeyName in ndpKey.GetSubKeyNames()) 
            { 
                if (versionKeyName.StartsWith("v")) 
                { 

                    RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName); 
                    string name = (string)versionKey.GetValue("Version", ""); 
                    string sp = versionKey.GetValue("SP", "").ToString(); 
                    string install = versionKey.GetValue("Install", "").ToString(); 
                    if (install == "") //no install info, must be later. 
                        Console.WriteLine(versionKeyName + "  " + name); 
                    else 
                    { 
                        if (sp != "" && install == "1") 
                        { 
                            Console.WriteLine(versionKeyName + "  " + name + "  SP" +
 sp); 
                        } 

                    } 
                    if (name != "") 
                    { 
                        continue; 
                    } 
                    foreach (string subKeyName in versionKey.GetSubKeyNames()) 
                    { 
                        RegistryKey subKey = versionKey.OpenSubKey(subKeyName); 
                        name = (string)subKey.GetValue("Version", ""); 
                        if (name != "") 
                            sp = subKey.GetValue("SP", "").ToString(); 
                        install = subKey.GetValue("Install", "").ToString(); 
                        if (install == "") //no install info, must be later. 
                            Console.WriteLine(versionKeyName + "  " + name); 
                        else 
                        { 
                            if (sp != "" && install == "1") 
                            { 
                                Console.WriteLine("  " + subKeyName + "  " + name + " 
 SP" + sp); 
                            } 
                            else if (install == "1") 
                            { 
                                Console.WriteLine("  " + subKeyName + "  " + name); 
                            } 
                        } 
                    } 
                } 
            } 
        } 
    } 

In questo esempio viene generato un output simile al seguente:

v2.0.50727  2.0.50727.4016  SP2 v3.0  3.0.30729.4037  SP2 v3.5  3.5.30729.01  SP1 v4 C
lient  4.0.30319 Full  4.0.30319  

Per trovare le versioni di .NET Framework eseguendo query sul Registro di sistema nel codice (.NET Framework
4.5 e versioni successive)
1. L'esistenza del valore DWORD Release indica che nel computer è stato installato .NET Framework 4.5 o versioni
successive. Il valore di questa parola chiave indica la versione installata. Per controllare questa parola chiave, usare i
metodi OpenBaseKey ﴾https://msdn.microsoft.com/it‐
it/library/microsoft.win32.registrykey.openbasekey﴾v=vs.110﴿.aspx﴿ e OpenSubKey ﴾https://msdn.microsoft.com/it‐
it/library/ms128501﴾v=vs.110﴿.aspx﴿ della classe Microsoft.Win32.RegistryKey ﴾https://msdn.microsoft.com/it‐
it/library/microsoft.win32.registrykey﴾v=vs.110﴿.aspx﴿ per accedere alla sottochiave Software\Microsoft\NET
Framework Setup\NDP\v4\Full in HKEY_LOCAL_MACHINE nel Registro di sistema di Windows.

2. Verificare il valore della parola chiave Release per determinare la versione installata. Affinché sia compatibile con la
versione attualmente installata, è possibile cercare un valore maggiore o uguale ai valori elencati nella tabella. Ecco le
versioni di .NET Framework e le parole chiave Release associate.

Versione Valore DWORD di Release

.NET Framework 4.5 378389

.NET Framework 4.5.1 installato con Windows 8.1 378675

.NET Framework 4.5.1 installato in Windows 8, Windows 7 SP1 o Windows Vista SP2 378758

.NET Framework 4.5.2 379893

.NET Framework 4.6 installato con Windows 10 393295

.NET Framework 4.6 installato in tutte le altre versioni del sistema operativo 393297

.NET Framework 4.6.1 installato in Windows 10 394254

.NET Framework 4.6.1 installato in tutte le altre versioni del sistema operativo 394271

Ecco un esempio di verifica di un valore maggiore o uguale ai valori della parola chiave Release per ogni versione:
C#

using System; 
using Microsoft.Win32; 

C#

private static void Get45or451FromRegistry() 

  using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
 RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v
4\\Full\\")) { 
    if (ndpKey != null && ndpKey.GetValue("Release") != null) { 
      Console.WriteLine("Version: " + CheckFor45DotVersion((int) ndp
Key.GetValue("Release"))); 
    } 
      else { 
         Console.WriteLine("Version 4.5 or later is not detected.");
      }  
  } 

C#

// Checking the version using >= will enable forward compatibility,  
// however you should always compile your code on newer versions of 
// the framework to ensure your app works the same. 
private static string CheckFor45DotVersion(int releaseKey) 

   if (releaseKey >= 393295) { 
      return "4.6 or later"; 
   } 
   if ((releaseKey >= 379893)) { 
    return "4.5.2 or later"; 
  } 
  if ((releaseKey >= 378675)) { 
    return "4.5.1 or later"; 
  } 
  if ((releaseKey >= 378389)) { 
    return "4.5 or later"; 
  } 
  // This line 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"; 

In questo esempio viene generato un output simile al seguente:

Version: 4.5.1 or later   
Per trovare la versione corrente del runtime con lo strumento Clrver
Usare lo strumento CLR Version ﴾Clrver.exe﴿ per determinare le versioni di Common Language Runtime installate in un
computer.

Al prompt dei comandi di Visual Studio immettere clrver . Questo comando consente di generare un output
analogo a quello illustrato di seguito.

Versions installed on the machine: v2.0.50727 v4.0.30319   

Per altre informazioni sull'uso di questo strumento, vedere Clrver.exe ﴾CLR Version Tool﴿
﴾https://msdn.microsoft.com/it‐it/library/ff427522﴾v=vs.110﴿.aspx﴿.

Per trovare la versione corrente del runtime eseguendo una query sulla classe Environment nel codice
Eseguire una query sulla proprietà Environment.Version ﴾https://msdn.microsoft.com/it‐
it/library/system.environment.version﴾v=vs.110﴿.aspx﴿ per recuperare un oggetto Version
﴾https://msdn.microsoft.com/it‐it/library/system.version﴾v=vs.110﴿.aspx﴿ che identifica la versione del runtime che
esegue attualmente il codice. È possibile usare la proprietà Version.Major ﴾https://msdn.microsoft.com/it‐
it/library/system.version.major﴾v=vs.110﴿.aspx﴿ per ottenere l'identificatore della versione principale ﴾ad esempio "4"
per la versione 4.0﴿, la proprietà Version.Minor ﴾https://msdn.microsoft.com/it‐
it/library/system.version.minor﴾v=vs.110﴿.aspx﴿ per ottenere l'identificatore della versione secondaria ﴾ad esempio "0"
per la versione 4.0﴿ oppure il metodo Object.ToString ﴾https://msdn.microsoft.com/it‐
it/library/system.object.tostring﴾v=vs.110﴿.aspx﴿ per ottenere l'intera stringa di versione ﴾ad esempio
"4.0.30319.18010", come illustrato nel seguente codice﴿. Questa proprietà restituisce un valore singolo che
corrisponde alla versione del runtime che esegue attualmente il codice; non restituisce le versioni di assembly o altre
versioni del runtime che possono essere installate nel computer.

Per le versioni 4, 4.5, 4.5.1 e 4.5.2 di .NET Framework, la proprietà Environment.Version ﴾https://msdn.microsoft.com/it‐
it/library/system.environment.version﴾v=vs.110﴿.aspx﴿ restituisce un oggetto Version ﴾https://msdn.microsoft.com/it‐
it/library/system.version﴾v=vs.110﴿.aspx﴿ la cui rappresentazione di stringa ha il formato 4.0.30319.xxxxx . Per .NET
Framework 4.6, ha il formato 4.0.30319.42000 .

Di seguito è illustrato un esempio di esecuzione di query sulla proprietà Environment.Version


﴾https://msdn.microsoft.com/it‐it/library/system.environment.version﴾v=vs.110﴿.aspx﴿ per informazioni sulla versione
del runtime.

C#

using System; 
using Microsoft.Win32; 

C#

    private static void GetVersionFromEnvironment() 
    { 
        Console.WriteLine("Version: " + Environment.Version.ToString()); 

    } 
In questo esempio viene generato un output simile al seguente:

Version: 4.0.30319.18010   

Vedere anche
Procedura: determinare gli aggiornamenti di .NET Framework installati ﴾https://msdn.microsoft.com/it‐
it/library/hh925567﴾v=vs.110﴿.aspx﴿
Guida all'installazione ﴾https://msdn.microsoft.com/it‐it/library/5a4x27ek﴾v=vs.110﴿.aspx﴿
Versioni e dipendenze ﴾https://msdn.microsoft.com/it‐it/library/bb822049﴾v=vs.110﴿.aspx﴿

© 2017 Microsoft