【问题标题】:Which .NET Version is installed on this host?此主机上安装了哪个 .NET 版本?
【发布时间】:2018-07-23 14:49:33
【问题描述】:

我正在尝试找出在此特定主机上运行的 .NET 版本。我得到了矛盾的结果:

  • ASoft .NET 版本检测器说 4.6.2
  • 注册表键为“Release”“394802”,根据how-to-determine-which-versions-are-installed映射到4.6.2
  • 但是,mscorlib.dllclr.dll 的版本为 4.7.2117.0,而 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 中的其他一些文件的版本为 "4.6.1586"(例如 csc .exe)。
  • Environment.Version 返回 4.0.30319.42000

这里是总结该信息的屏幕截图。

这里是 ASoft Version Detector 的完整日志:

<32Bit>
2.0.50727.8745
->C:\Windows\Microsoft.NET\Framework\v2.0.50727
4.7.2117.0
->C:\Windows\Microsoft.NET\Framework\v4.0.30319

<64Bit>
2.0.50727.8745
->C:\Windows\Microsoft.NET\Framework64\v2.0.50727
4.7.2117.0
->C:\Windows\Microsoft.NET\Framework64\v4.0.30319

< Installed .NET Frameworks >
.NET FW 2.0 SP 2  (CLR:2.0)
.NET FW 3.0 SP 2  (CLR:2.0)
.NET FW 3.5 SP 1  (CLR:2.0)
.NET FW 4.6.2  (CLR:4.0)

< Installed Updates >
Microsoft .NET Framework 4 Client Profile 
KB2468871
KB2468871v2
KB2478063
KB2533523
KB2544514
KB2600211
KB2600217
Microsoft .NET Framework 4 Extended 
KB2468871
KB2468871v2
KB2478063
KB2533523
KB2544514
KB2600211
KB2600217
KB2468871
KB2468871v2
KB2478063
KB2533523
KB2544514
KB2600211
KB2600217

< Installed Languages 3.0>
English - United States
< Installed Languages 3.5.x>
English - United States
< Installed Languages 4.x>
English - United States

我想知道它是哪个 .NET 版本,它是真正安装的?注册表“Release”键与“mscorlib.dll”版本不匹配怎么办?安装是否损坏?

如果注册表“Release”键不可靠,确定 .NET/CLR 版本最可靠的信息来源是什么?

【问题讨论】:

  • 您可以同时安装不同版本的 .net。
  • 文件版本很少相关。你为什么还要看他们?最初是什么开始了这场狩猎,即你为什么不相信工具/注册表告诉你的东西。 @HamletHakobyan - CLR 版本中没有不同的版本。您只能安装一个 4.x(从运行时的角度来看。您可以拥有大量的目标包/SDK,但这在这里无关紧要)
  • 对。所有 4.X 安装都是就地更新。因此,它们不能并排。了解正确的 .NET 版本对我来说很重要,因为我正在尝试针对所有可用的 .NET 版本测试我的产品。在这个特定的主机上,我不确定我在测试什么。
  • 已经有很多 4.6.2 版本,通过 Windows Update 部署。毫无疑问,那些 4.7 DLL 是通过安全更新潜入的。顺便说一句,这并不总是很好。这个月的更新值得注意,它caused trouble

标签: .net


【解决方案1】:

我强烈建议您安装 .NET Framework 4.6.2,这正是工具和注册表告诉您的。

此外,您已应用 this update(或更高版本),这就是您最终获得某些文件的 4.7.2117.0 版本号的方式。1

Environment.Version 总是试图告诉您您使用的是哪个 CLR 版本:

对于 .NET Framework 版本 4、4.5、4.5.1 和 4.5.2,Environment.Version 属性返回一个版本对象,其字符串表示形式为 4.0.30319.xxxxx。对于 .NET Framework 4.6、其单点版本和 .NET Framework 4.7,它的格式为 4.0.30319.42000。

警告

对于 .NET Framework 4.5 及更高版本,我们不建议使用 Version 属性来检测运行时的版本;


1我不知道这次更新。我刚刚搜索了mscorlib 4.7.2117.0,这是第一个结果。

【讨论】:

  • 感谢您的回答!看起来像一个热的痕迹。根据“版本检测器”(我已将日志添加到我的问题)未安装 KB,但当然它可能是另一个 KB 的一部分。
猜你喜欢
  • 2020-03-17
  • 1970-01-01
  • 2011-03-23
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
相关资源
最近更新 更多