在我之前写的一篇文章.Net Framework 4.x 程序到底运行在哪个 CLR 版本之上中,我们说到 CLR 版本和 .Net Framework 基础库之间是有差别的,其版本号更是有差别的。不过其中并没有给出方法获取 CLR 的版本号。本文将给出几种方便的获取 CLR 版本号的方法。


写代码获取

.Net Framework 的 System.Environment 类型的 Version 属性直接可以获取到版本号。于是只需要简单写一个控制台程序即可获取。

Console.WriteLine($"{Environment.Version}");

以上只写关键的一行,其他类啊、Main 函数啊、Console.ReadKey 的都自行脑补即可。因为这不是本文重点。

在我的 Windows 10 创造者更新 1703 上得到的结果是:4.0.30319.42000

用 PowerShell 获取

考虑到 PowerShell 可以直接使用到 .Net Framework 中的类型,于是上面的代码很容易直接翻译成 PowerShell 脚本:

PS C:\Users\lvyi> [Environment]::Version

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      30319  42000

上面的第一行是脚本,后面全是输出,本文之后的 PowerShell 代码部分都是这样。

可以看到,虽然格式不同,但依然拿到了跟我们写代码一模一样的结果。

本文只是一个引子,你可以拿着 PowerShell 去调用其他 .Net Framework 的类和方法,根本不需要打开 Visual Studio 编译,非常方便!

不过既然是 PowerShell,那就有更多可以尝试的方法,比如说直接拿 PowerShell 的全局变量:

PS C:\Users\lvyi> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.15063.608
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.15063.608
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

如果觉得杂乱项太多,直接取里面的 CLRVersion 即可:

PS C:\Users\lvyi> $PSVersionTable.CLRVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      30319  42000

本文会经常更新,请阅读原文: https://walterlv.github.io/post/powershell/2017/09/28/get-clr-version-via-powershell.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系