2013-02-28 82 views
4

我已经提到堆栈溢出问题Is there an easy way to check the .NET Framework version?。但是那里给出的建议没有用于以下目的。如何获得应用程序正在使用的.NET框架版本

我们如何识别C#控制台应用程序正在使用的.NET版本?

环境:

  • Visual Studio 2010中
  • 的.NET Framework 3.5(请参阅附截图)

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(); 
     } 
    } 
} 

输出

Enter image description here

VERSION设置

Enter image description here

+0

@Habib对不起,那个 – 1Mayur 2013-02-28 06:00:51

+2

这有助于http://stackoverflow.com/a/8543850/284111? – 2013-02-28 06:03:01

+0

你需要更具体的什么“版本”你需要 - 与建设3.5你得到运行时2.0或4.0。这可能是你需要的,但澄清会有帮助。 – 2013-02-28 06:21:04

回答

4

尝试此(它会为版本一起> = 3.5)

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

P.S.愚蠢的回答从我的旧年,请忽略此(我不能删除这个,因为它是一个被接受的答案)

+3

这不适用于.net framework 2.0,因为它里面没有“System.Core”(不要LINQ)。 – 2013-02-28 06:10:56

+0

是的,我正在试图解决这个问题。 – 2013-02-28 06:11:35

+0

所以基本的想法是检查'System.Core dll'的版本号?你能否详细说明答案中的逻辑? – Lijo 2013-02-28 07:00:05

2

第二和第三接近的是CLR version numbers

.NET Framework 2和.NET Framework 3.5正在使用CLR 2.0

而且没有CLR 3.0或3.5。

+1

这......除非你加载WCF库,否则我不是肯定会说什么... – JerKimball 2013-02-28 07:09:58

相关问题