ChatGPT解决这个技术问题 Extra ChatGPT

如何找到 .NET 版本?

如何找出安装的 .NET 版本?

我正在寻找像 java -version 这样简单的东西,我可以在命令提示符下键入它并告诉我当前安装的版本。

我最好补充一点,可能没有安装 Visual Studio - 这通常是我想了解的有关客户端计算机的信息。

去运行并执行这个命令: wmic /namespace:\\root\cimv2 path win32_product where "name like '%%.NET%%'" get version

P
Peter Mortensen

有一种更简单的方法可以从 cmd 提示符获取安装在计算机上的确切版本 .NET 版本。只需按照以下说明进行操作;

打开命令提示符(即 Windows + R → 键入“cmd”)。键入以下命令,全部在一行上:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP"

(这将列出所有 .NET 版本。)

如果您想查看最新的 .NET 4 版本。在一行中键入以下指令:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\full" /v version

请在下面找到所附图片以查看其显示方式。

https://i.stack.imgur.com/QIsB6.png


发现这是最简单和最精确的一个(最后带有“*\v4\Full”),因为它也只需一个简单的命令即可获得次要版本。
好的。想要一些可以在用户 PC 上运行的东西,就是这样。谢谢!
不错,但没有显示安装在我的 Windows 7 机器上的 4.5、4.6 和 4.7 框架:(
不太准确;我在控制面板>程序和功能下查看,没有.NET的迹象。但是,我运行您的命令,它给了我输出 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0 。可能,.NET 曾经安装在我的机器上,已经卸载,但是注册表没有被清理
P
Peter Mortensen

只需键入以下任何一个命令,即可在第一行为您提供最新版本。

1. CSC
2. GACUTIL /l ?
3. CLRVER

如果您安装了 Visual Studio,则只能从 Visual Studio 命令提示符运行这些命令,或者如果您有 .NET 框架 SDK,则只能在 SDK 命令提示符下运行。

4. wmic product get description | findstr /C:".NET Framework"
5. dir /b /ad /o-n %systemroot%\Microsoft.NET\Framework\v?.*

最后一个命令 (5) 将列出所有已安装的 .NET 版本(4.5 除外),最新的在前。您需要运行第 4 个命令来查看是否安装了 .NET 4.5。

下面给出了 PowerShell 命令提示符中的另外三个选项。

6.   [environment]::Version
7.   $PSVersionTable.CLRVersion
8.   gci 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | gp -name Version,Release -EA 0 |
     where { $_.PSChildName -match '^(?!S)\p{L}'} | select PSChildName, Version, Release

最后一个命令 (8) 将为您提供所有版本,包括 .NET 4.5。


“CSC”只能在 Visual Studio 命令提示符下工作(默认情况下)。它还将只为您提供该版本的编译器所针对的 .NET 框架的最大版本。 - 如果您安装了 VS2005 和 VS2008,不同版本的 CSC 会报告不同的版本。
csc 输出 C# 编译器的版本,而不是 .NET Framework 的版本。
即使我认为我已经安装了最后一个命令,它也没有返回 4.5 版。 stackoverflow.com/questions/3487265/… 的答案包括它。
最后一个命令未显示最新版本。我们可以在 appwiz.cpl 中查找版本,或者“wmic product”命令也很有帮助。 windows-commandline.com/find-net-version-on-your-computer
为8号加油!
T
Tobias Tengler

此答案仅适用于 .NET Core!

在您选择的终端中键入 dotnet --version 将打印出正在使用的 .NET Core SDK 版本。

了解有关 dotnet 命令 here 的更多信息。


dotnet --version 将安装最高版本的 SDK。 dotnet --list-sdks 将安装所有 SDK。 dotnet --list-runtimes 将安装所有运行时。
对于 .net 框架,我们可以使用 powershell 或 CMD 检查它,如上面的答案和这里 developingdaily.com/article/windows/…
H
Himanshu

在进入命令提示符之前,请按照以下步骤操作...

转到“C:/Windows/Microsoft.NET/Framework”→在此文件夹中,将有文件夹(全部或任何):

v1.0.3705

v2.0.50727

v3.5

v4.0.30319

您最新的 .NET 版本将位于 v 编号最高的文件夹中,因此如果“v4.0.30319”可用,它将包含您最新的 .NET 框架。但是,“v4.0.30319”并不意味着您拥有 .NET 框架 4.0 版。 “v4.0.30319”是您的 Visual C# 编译器版本,因此,为了找到 .NET 框架版本,请执行以下操作。

转到命令提示符并遵循以下路径:

C:\Windows\Microsoft.NET\Framework\v4.0.30319 (或任何最高 v 号文件夹)

C:\Windows\Microsoft.NET\Framework\v4.0.30319 > csc.exe

输出:

适用于 Microsoft (R) .NET Framework 4.5 的 Microsoft (R) Visual C# 编译器版本 4.0.30319.17929 版权所有 (C) Microsoft Corporation。版权所有。

下面的例子:

https://i.stack.imgur.com/AqFcA.jpg


很好,但至少在我的服务器上的输出不同 - 没有包含“for”消息:lh4.googleusercontent.com/-p7Fu5GDj0cg/UywSqPTdQjI/AAAAAAAAALQ/…
更改目录 输入:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319,然后输入 csc.exe,希望对某人有所帮助。
当您通过有限的用户帐户登录时,它最有效。
P
Peter Mortensen

.NET Version Detector 是一个 GUI 实用程序,它显示安装了框架的六个 (!) 版本中的哪一个。


P
Peter Mortensen

对于安装的框架版本,它会根据您安装的服务包和修补程序而有所不同。查看 this MSDN page 了解更多详情。它建议查看 %systemroot%\Microsoft.NET\Framework 以获取版本。

Environment.Version 将以编程方式为您提供 CLR 的版本。

请注意,这是 CLR 的版本,不一定与您安装的框架的最新版本相同(.NET 3.0 和 3.5 都使用 v2 的 CLR)。


Environment.Version 似乎为您提供了应用程序版本。说,从 LinqPad 我想找到它运行的 .NET 版本,它给我的不是 .NET 版本,而是 LinqPad 版本
@Naomi:不,它提供了 CLR 的版本。来自文档:“获取描述公共语言运行时的主要、次要、构建和修订号的版本对象。”。
我应该在这个对象中看到什么?我看到 2.0.50727.5472 2 Minor 0 Build 50727 Revision 5472 MajorRevision 0 MinorRevision 5472 在我看来不像 CLR 版本运行时
我加载了最新版本的 LinqPad,现在我得到了 4.0.30319.18052 的版本。以前的版本针对 .NET 3.5 版本。所以,我还是有点困惑——它确实显示 CLR 版本吗?
@Naomi:是的,它确实显示了 CLR 版本。 2.0.50727.5472 是 .Net 2.0 CLR 的版本,也用于 .Net 3.0 和 3.5。 4.0.30319.18052 是.Net 4.0,版本号不同。
R
RBT

MSDN 非常详细地here详细介绍了如何从注册表中检查它:

通过查看注册表查找 .NET Framework 版本 (.NET Framework 1-4) 在“开始”菜单上,选择“运行”。在“打开”框中,输入 regedit.exe。您必须具有管理凭据才能运行 regedit.exe。在注册表编辑器中,打开以下子项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP 已安装的版本列在 NDP 子项下。版本号存储在版本条目中。对于 .NET Framework 4,版本条目位于 Client 或 Full 子项下(在 NDP 下),或在两个子项下。通过查看注册表查找 .NET Framework 版本(.NET Framework 4.5 及更高版本) 在“开始”菜单上,选择“运行”。在“打开”框中,输入 regedit.exe。您必须具有管理凭据才能运行 regedit.exe。在注册表编辑器中,打开以下子项: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 请注意,完整子项的路径包括子项 Net Framework 而不是 .NET Framework 检查名为 Release 的 DWORD 值. Release DWORD 的存在表明该计算机上已安装 .NET Framework 4.5 或更高版本。

注意:上述快照中被剪辑的最后一行是 On all other OS versions: 461310。我尽力避免在截屏时信息被截断,但表格太大了。


D
Dov Benyomin Sohacheski

只需在命令行中键入以下内容:

dir /b /ad /o-n %systemroot%\Microsoft.NET\Framework\v?.*

您的 dotnet 版本将显示为最高数字。


它显示直到 4.0 的所有版本,但例如不显示 4.5。
P
Peter Mortensen

如果您打开命令提示符并键入以下两个命令,则将列出当前机器上安装的所有框架版本(每个版本都存储在此目录中的单独目录中)。

cd %systemroot%\Microsoft.NET\Framework

dir /A:D

不推荐,因为这可能会产生误导。如果您升级 4.0 => 4.5.2,该目录可能只显示 v4.0.30319。参见 Sunimal Kaluarachchi 的示例。
C
Community

如果你经常这样做(我倾向于这样做),你可以在桌面上创建一个快捷方式,如下所示:

右键单击桌面并选择新建 → 快捷方式。在位置字段中,粘贴以下字符串:powershell.exe -noexit -command "gci 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | gp -name Version,Release -EA 0 | where { $_. PSChildName -match '^(?!S)\p{L}'} | select PSChildName, Version, Release”(来自 Binoj Antony 的帖子)。点击下一步。为快捷方式命名并完成。

(注意:我不确定这是否适用于 4.5,但我可以确认它适用于 4.6 和 4.5 之前的版本。)


版本 1.0 和 1.1 不显示在 NET Framework 设置项中,但确实存在于 %systemroot%\Microsoft.NET\Framework\ 文件夹中。
h
halfer

天哪,找到已安装的 .net 框架的版本这么乱?

Windows > 搜索 > Visual Studio Installer > 对于已安装的 VS 版本,点击更多 > 修改 > 单个组件并在那里查看:

https://i.stack.imgur.com/yX9WN.png


“这通常是我想了解的有关客户端机器的信息。”
D
Dan Esparza

要在命令行中获取已安装的版本,我建议使用 net-version

它只是一个二进制文件。

它使用我的 Microsoft 提供的指南来获取版本信息。

它不需要安装 SDK。

或 Visual Studio 命令提示符。

它不需要您自己使用 regedit 和查找注册表项。如果需要,您甚至可以在命令行工具中通过管道输出。

源代码在 github.com 上可用

完全披露:出于沮丧,我自己创建了这个工具。


如果那组(不完整的)版本信息对您来说足够好,那么您将获得更多权力。
@Shiva您表示您认为该命令显示了一切,我恭敬地不同意您的观点。请查看 Microsoft 提供的指南链接。例如:您的查询未显示我已安装 .NET 4.6.1。此外,它表明我安装了“CDF”,它不是 .NET 框架版本。
E
Eric Aya

打开 cmd 提示符类型:

dotnet --info

这将返回所有信息,并且 --version 不再起作用
R
Raghav

这是我通过参考使用的 Power Shell 脚本:

https://stackoverflow.com/a/3495491/148657

$Lookup = @{
    378389 = [version]'4.5'
    378675 = [version]'4.5.1'
    378758 = [version]'4.5.1'
    379893 = [version]'4.5.2'
    393295 = [version]'4.6'
    393297 = [version]'4.6'
    394254 = [version]'4.6.1'
    394271 = [version]'4.6.1'
    394802 = [version]'4.6.2'
    394806 = [version]'4.6.2'
    460798 = [version]'4.7'
    460805 = [version]'4.7'
    461308 = [version]'4.7.1'
    461310 = [version]'4.7.1'
    461808 = [version]'4.7.2'
    461814 = [version]'4.7.2'
    528040 = [version]'4.8'
    528049 = [version]'4.8'
}

# For One True framework (latest .NET 4x), change the Where-Oject match 
# to PSChildName -eq "Full":
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
  Get-ItemProperty -name Version, Release -EA 0 |
  Where-Object { $_.PSChildName -match '^(?!S)\p{L}'} |
  Select-Object @{name = ".NET Framework"; expression = {$_.PSChildName}}, 
@{name = "Product"; expression = {$Lookup[$_.Release]}}, 
Version, Release

上面的脚本利用了注册表,并为我们提供了 Windows 更新号以及安装在机器上的 .Net Framework。

参考:https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#to-find-net-framework-versions-by-querying-the-registry-in-code-net-framework-45-and-later

以下是在两台不同机器上运行该脚本时相同的结果

已安装 .NET 4.7.2 的位置:

https://i.stack.imgur.com/WlxOE.png

未安装 .NET 4.7.2 的地方:

https://i.stack.imgur.com/NB7vq.png


A
A.I

试试 Scott Hanselman 的.NET Checker


一个很好的建议。不过,OP 专门指出了一个命令行工具。
J
James Poulose

clrver 是一个优秀的。只需在 .NET 提示符下执行它,它就会列出所有可用的框架版本。


此工具不仅需要安装 .NET 框架,还需要安装 Visual Studio。 OP 表明可能未安装 Visual Studio。
而且它没有显示所有(甚至大多数)版本。对于我的 Win7 PC,仅显示 V2.0 和 4.0,但上面的其他一些方法也显示版本:3.0、3.5、4.5、4.5.1、4.5.2、4.6.1 和 4.7。
@Zeek clrver 显示已安装的 .net 运行时,可以 .net 版本之间共享 /b>。请参阅 How to: Determine Which .NET Framework Versions Are InstalledIdentifying the .NET version you are running (2.0, 4.5, 4.5.1 or 4.5.2)
S
Sy C Dang

https://i.stack.imgur.com/QPQIc.png


可能不是最干净的方式,但确实是我完全忘记的选择。您(开发人员)powershell 中的简单 GACUTIL /l ? 产生的效果相同。
s
skrie

适用于运行 Windows 10 1607 并正在寻找 .net 4.7 的任何人。无视以上所有。

它不在注册表、C:\Windows\Microsoft.NET 文件夹或已安装程序列表或同一列表的 WMIC 显示中。

查找“已安装的更新”KB3186568。


它在注册表中,如 documented by MicrosoftHKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full - 对于 W10 1607 上的 4.7,Release 值将是 460798
它不是。 “完整”键甚至不存在。
确实如此,而且确实如此。我正在运行 1607,我现在正在查看 Full 键!
l
lightwing

每个 Microsoft 在 powershell 中:

Get-ChildItem "hklm:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\" | Get-ItemPropertyValue -Name Release | % { $_ -ge 394802 }

请参阅此链接中的表格以获取 DWORD 值以搜索特定版本:

https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#ps_a


P
Paramjot Singh

如果你的机器上安装了 Visual Studio,

只需转到帮助 > 关于 Microsoft Visual Studio

您将看到有关 IDE 正在使用的 .NET 版本的信息。

https://i.stack.imgur.com/UzxS8.png