我正在构建一个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
答案 0 :(得分:3)
您所说的NET_x_y版本号manafest从未成为官方规范的一部分,而且似乎微软已停止使用它们。
答案 1 :(得分:0)
Environment.Version
出了什么问题?
答案 2 :(得分:0)
Assembly.ImageRuntimeVersion
包含编译程序集的运行时版本,因此根本不需要使用预处理程序指令进行丑陋的黑客操作。