v4.0的.NET版本定义发生了什么变化?

时间:2010-03-07 17:18:34

标签: c# .net .net-4.0

我正在构建一个C#类库,并使用Visual Web Developer / Visual C#2010的beta 2。我正在尝试保存有关构建库的.NET版本的信息。在过去,我能够使用它:

// What version of .net was it built under?
#if NET_1_0
        public const string NETFrameworkVersion = ".NET 1.0";
#elif NET_1_1
        public const string NETFrameworkVersion = ".NET 1.1";
#elif NET_2_0
        public const string NETFrameworkVersion = ".NET 2.0";
#elif NET_3_5
        public const string NETFrameworkVersion = ".NET 3.5";
#else
        public const string NETFrameworkVersion = ".NET version unknown";
#endif

所以我想我可以添加:

#elif NET_4_0
        public const string NETFrameworkVersion = ".NET 4.0";

现在,在Project-> Properties中,我的目标框架是“.NET Framework 4”。如果我检查:

Assembly.GetExecutingAssembly().ImageRuntimeVersion

我可以看到我的运行时版本是v4.0.21006(所以我知道我的CPU上安装了.NET 4.0)。我自然希望看到我的NETFrameworkVersion变量包含“.NET 4.0”。它不是。它拥有“.NET版本未知”。

所以我的问题是,为什么没有定义NET_4_0?命名约定是否改变了?是否有一些简单的其他方法来确定版本中的.NET框架构建版本> 3.5

3 个答案:

答案 0 :(得分:3)

您所说的NET_x_y版本号manafest从未成为官方规范的一部分,而且似乎微软已停止使用它们。

答案 1 :(得分:0)

Environment.Version出了什么问题?

答案 2 :(得分:0)

Assembly.ImageRuntimeVersion

包含编译程序集的运行时版本,因此根本不需要使用预处理程序指令进行丑陋的黑客操作。