在运行时获取当前的.NET CLR版本?

dri*_*iis 37 .net clr

如何在正在运行的.NET程序中获取当前的CLR Runtime版本?

Lau*_*ble 41

查看System.Environment.Version属性(http://msdn.microsoft.com/en-us/library/system.environment.version.aspx).

  • 警告来自https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#ne​​t_d"对于.NET Framework 4.5及更高版本,我们不建议使用System.Environment.Version属性来检测运行时的版本.相反,我们建议您查询注册表,如通过在代码中查询注册表来查找.NET Framework版本中所述(.NET Framework 4.5以及本文前面的部分." blargh. (3认同)
  • 这个答案在 2009 年可能***有效,但在今天却完全错误。对于任何高于 4.5.1 的 DotNet 版本,“System.Environment.Version”将返回 4.0.30319.42000。 (2认同)

Jay*_*kul 8

从.NET 4.5开始,你无法真正使用System.Environment.Version它(它只会返回4.0.{something},允许你验证你是"至少"4.0,但没有告诉你哪个实际版本可用,除非你可以映射一个完整的内置编号列表).

相反(如@jim-w所述),您必须针对"简单"查找表检查注册表.它有点荒谬,并且是特定 Windows的,不适用于.NET Core ...

但是......从.NET 4.7.1开始,他们已经将.NET Core中的一个类反向移植到了完整的框架中,现在您可以检查System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription

不幸的是,它在版本号之前返回一个带有".NET Core",".NET Framework"或".NET Native"的字符串 - 所以你仍然需要进行一些解析.


Dav*_*emp 7

尝试Environment.Version获取该信息.你也可能需要打电话ToString().