获取当前.NET Framework版本的步骤
我使用.NET3.5SP1平台构建我的C#项目。我的代码将被编译,并用于其他.NET平台版本(但更高版本)。我需要在代码中获取当前的.NET Framework版本。控制台输出(有关我从注册表获得的已安装版本的信息): 我知道.NET3.0和3.5是基于.NET2.0的,但我需要获得当前平台的确切版本,而不是基本平台版本获取当前.NET Framework版本的步骤,.net,.net,我使用.NET3.5SP1平台构建我的C#项目。我的代码将被编译,并用于其他.NET平台版本(但更高版本)。我需要在代码中获取当前的.NET Framework版本。控制台输出(有关我从注册表获得的已安装版本的信息): 我知道.NET3.0和3.5是基于.NET2.0的,但我需要获得当前平台的确切版本,而不是基本平台版本 为什么我(通过环境.Version)得到2.0.50727.5477而不是3.5.30729.5420 为什么当前版本在版本字符串的最后一个数字中有.5477而不是.5420
环境.Version
)得到2.0.50727.5477而不是3.5.30729.5420检查解决方案中的所有项目是否针对正确版本的.net framework 这是您要查找的
环境。版本属性:
你的答案是:
.NET Framework版本与CLR版本不同。CLR只是.NET Framework的一个组件。因此.NET Framwork版本3.0和3.5使用CLR版本2.0
您的测试程序正在获取.NET Framework的确切版本。但它错误地将Environment.Version
标记为“当前.NET Framework版本”,而实际上它是“当前CLR版本”。@Andrew提供的链接将该值声明为:
获取描述主版本、次版本、生成版本和
公共语言运行库的修订号
您阅读我的主题时不经意(我在最后一个输出字符串中使用它)。目前共有4个clr版本:1.0
,1.1
,2.0
,4
。这就是让你困惑的原因。这是一种你永远不想解决的问题。特别是如果您现在枚举“4.5.1客户端”,则它不存在。只有major.minor.build编号是稳定的,当通过Windows Update交付更新和安全修补程序时,修订号可以任意更改。例如:AutoCAD 2009应用程序使用.Net 3.0,但如果同时安装了.Net 3.5,则可以使用.Net 3.5。我的一些插件是为.NET3.5SP1平台编译的。在AutoCAD中,我必须检查当前的.NET版本,如果是3.5 SP1,我可以下载其他插件。他们不会使用3.0。所以我需要得到当前.Net Framework的确切版本。所以只要查看注册表中是否有3.5版本,你根本不关心版本号。Alberto向您展示了如何做到这一点。我知道如何获得所有已安装的.Net Framework版本(这不是问题)。但是为什么Environment.Version
返回无效(不是确切的)版本?它返回运行时版本。与.NET Framework版本无关,与CLR版本有关。对于2.0和3.5SP1之间的所有框架版本,都是v2.0.50727。对于所有更高版本,它都是v4.0.30319。请注意,您将在AutoCAD 2012中获得版本4,测试插件以查看它们是否仍在.NET 4上正确运行是必要的。“不确切”条款已经包含在我之前的评论中。
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...
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();
}
Version ver = Environment.Version;
Console.WriteLine("CLR Version {0}", ver.ToString());