获取当前的.NET Framework版本

时间:2014-04-15 13:31:15

标签: .net

我用.NET 3.5 SP1平台构建我的C#项目。我的代码也将被编译,也适用于其他.NET平台版本(但稍后)。我需要在我的代码中获取当前的.NET Framework版本。控制台输出(有关我从注册表获得的已安装版本的信息):

Installed .NET Framework versions:
v2.0.50727      2.0.50727.5420   SP2
v3.0    3.0.30729.5420   SP2
v3.5    3.5.30729.5420   SP1
v4.5.1 Client   4.5.50938
v4.5.1 Full     4.5.50938
v4.0 Client     4.0.0.0
***
Current .NET Framework version: 2.0.50727.5477
Press any key for exit...

我理解.NET 3.0和3.5基于.NET 2.0,但我需要获得当前平台的精确版本,而不是基础平台版本。

  1. 为什么我(通过Environment.Version 2.0.50727.5477 而不是 3.5.30729.5420
  2. 为什么当前版本在版本字符串的最后一个数字中 .5477 而不是 .5420
  3. 如何获取当前.NET Framework的确切版本?
  4. 我的代码基于this article

    static void Main(string[] args) {
      NetFrameworkInfo[] frameworks = 
        ExtendedEnvironment.GetInstalledNetFameworkVersions();
      Console.WriteLine("Installed .NET Framework versions:");
      foreach (NetFrameworkInfo item in frameworks) {
        Console.WriteLine(item);
      }
      Console.WriteLine("***");
      Version version = Environment.Version;
      Console.WriteLine("Current .NET Framework version: {0}", version);
      Console.WriteLine("Press any key for exit...");
      Console.ReadKey();
    }
    

2 个答案:

答案 0 :(得分:2)

检查解决方案中的所有项目是否针对正确版本的.net框架。

它正在寻找Environment.Version属性:

http://msdn.microsoft.com/en-us/library/system.environment.version%28v=vs.110%29.aspx

Version ver = Environment.Version;
Console.WriteLine("CLR Version {0}", ver.ToString());

答案 1 :(得分:0)

你的答案在这里:https://msdn.microsoft.com/en-us/library/bb822049(v=vs.110).aspx

.NET Framework版本与CLR版本不同。 CLR只是.NET Framework的一个组件。所以.NET Framwork版本3.0和3.5使用CLR版本2.0。

您的测试程序正在获取.NET Framework的确切版本。但是当它真的是“当前的CLR版本”时,它错误地将Environment.Version标记为“当前的.NET Framework版本”。 @Andrew提供的链接将此值声明为:

  

获取一个描述major,minor,build和的Version对象   公共语言运行时的修订号。