我用.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,但我需要获得当前平台的精确版本,而不是基础平台版本。
Environment.Version
) 2.0.50727.5477 而不是 3.5.30729.5420 ?我的代码基于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();
}
答案 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对象 公共语言运行时的修订号。