2011-02-23 17 views
6

¿Cómo puedo verificar desde una aplicación C# en sí misma, qué versión de dotnet está utilizando la aplicación?Identificar mi versión dotnet

+0

¿Quiso decir la versión mínima requerida por la aplicación? (TargetFrameworkVersion attr en el archivo de proyecto) –

+0

En realidad, necesito la ruta del marco de aplicación actual. Mi aplicación necesita ejecutar algún exe de la versión actual en ejecución. es decir, si mi aplicación usa 2.0, elegirá exe de la carpeta .net 2.0 y si usa 4 seleccionará exe de la carpeta .net 4.0. – hungryMind

Respuesta

12

Use Environment.Version - le da la versión exacta de .NET que ejecuta la aplicación.

Obtiene un objeto de versión que describe los números mayor, menor, construcción y revisión del tiempo de ejecución de idioma común.


para averiguar qué versión del marco está instalado, ver this SO preguntas y respuestas. En pocas palabras, necesitarás profundizar en el registro.

+3

¿Se puede distinguir entre 3.5, 3.0 y 2.0? (el tiempo de ejecución es el mismo, 2.0.alma) – xanatos

+0

@xanatos - No, no puede. Devolverá la versión en tiempo de ejecución. Si necesita saber qué está instalado, consulte [this] (http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-pack-are-installed) ASÍ pregunta y respuestas. – Oded

6

Puede utilizar el:

Environment.Version 

para obtener el número de versión del tiempo de ejecución de .NET.

0

Crear una aplicación de consola de añadir esta clase y ejecutarlo

using Microsoft.Win32; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 

    namespace ConsoleApplication2 
    { 
     public class GetDotNetVersion 
     { 
      public static void Get45PlusFromRegistry() 
    { 
     const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; 
     using (RegistryKey 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 >= will enable forward compatibility. 
    private static string CheckFor45PlusVersion(int releaseKey) 
    { 
     if (releaseKey >= 394802) 
      return "4.6.2 or later"; 
     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. 
     // that 4.5 or later is installed. 
     return "No 4.5 or later version detected"; 
    } 
} 
// Calling the GetDotNetVersion.Get45PlusFromRegistry method produces 
// output like the following: 
//  .NET Framework Version: 4.6.1 
} 
+0

Agregue una explicación con la respuesta de cómo esta respuesta ayuda a OP a corregir el problema actual –

0

En Visual Studio, vaya a Herramientas-> Nutget paquete Management-> Gestor de paquetes de consola Type en dotnet --version Y aquí tienes!

Cuestiones relacionadas