2013-02-28 5 views
4

J'ai fait référence à la question Stack Overflow Is there an easy way to check the .NET Framework version?. Mais les suggestions qui y ont été faites n'ont pas fonctionné dans le but suivant. Comment pouvons-nous identifier la version .NET utilisée par l'application console C#?Comment obtenir la version du framework .NET que l'application utilise

Environnement:

  • Visual Studio 2010
  • .NET Framework: 3.5 (s'il vous plaît voir capture d'écran ci-joint)

CODE

using System; 
using System.Globalization; 
using Microsoft.Win32; 
namespace TESTConsoleApplication 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //.NET version: Approach 1 
      RegistryKey installed_versions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP"); 
      string[] version_names = installed_versions.GetSubKeyNames(); 
      double latestFramework = Convert.ToDouble(version_names[version_names.Length - 1].Remove(0, 1), CultureInfo.InvariantCulture); 
      int SP = Convert.ToInt32(installed_versions.OpenSubKey(version_names[version_names.Length - 1]).GetValue("SP", 0)); 
      Console.WriteLine(latestFramework); 

      //Approach 2 
      string versionval = Environment.Version.ToString(); 
      Console.WriteLine(versionval); 

      //Approach 3 
      string systemVersionVal = System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion().ToString(); 
      Console.WriteLine(systemVersionVal); 

      Console.ReadLine(); 
     } 
    } 
} 

Sortie

Enter image description here

VERSION Setup

Enter image description here

+0

@Habib désolé abt que – 1Mayur

+2

Est-ce que cela aide http://stackoverflow.com/a/8543850/284111? –

+0

Vous devez être plus précis de la "version" dont vous avez besoin - avec build pour 3.5 vous obtenez le runtime 2.0 ou 4.0. C'est peut-être ce dont vous avez besoin, mais une clarification aidera. –

Répondre

4

Essayez cette (cela fonctionnera pour les versions> = 3,5)

string version = System.Reflection.Assembly 
        .GetExecutingAssembly() 
        .GetReferencedAssemblies() 
        .Where(x => x.Name == "System.Core").First().Version.ToString(); 

post-scriptum Réponse stupide de mes vieilles années, ignorez ceci s'il vous plaît (je ne suis pas capable de supprimer cela comme une réponse acceptée)

+3

Cela ne fonctionnera pas sur .net framework 2.0 car il n'y a pas de "System.Core" dedans (Laisser seul LINQ). –

+0

Oui, j'essaie maintenant de résoudre ce problème. –

+0

Donc l'idée de base est de vérifier le numéro de version de 'System.Core dll'? Pouvez-vous s'il vous plaît élaborer la logique dans la réponse? – Lijo

2

Les 2ème et 3ème approchés sont les CLR version numbers.

.NET Framework 2 et .NET Framework 3.5 utilisent CLR 2.0.

Et il n'y a pas de CLR 3.0 ou 3.5.

+1

Cela ... sauf si vous chargez les libs WCF, alors je ne suis pas sûr de ce qu'il dirait ... – JerKimball

Questions connexes