有没有一种方法可以通过命令行确定.NET Framework版本?

29

有时候我为了解决安装问题,只需要快速知道当前系统上安装的.NET框架版本号。

除了查看文件夹路径之外,是否有其他方法可以确定标准Windows系统上的.NET Framework版本号呢?

注意:这不是针对开发计算机,而是针对开箱即用的Windows系统。

以下命令可以工作,但我正在寻找更简单的方法。

dir %WINDIR%\Microsoft.Net\Framework\v*

Directory of C:\Windows\Microsoft.Net\Framework

07/13/2009  07:20 PM    <DIR>          v1.0.3705
07/13/2009  07:20 PM    <DIR>          v1.1.4322
01/20/2010  01:16 PM    <DIR>          v2.0.50727
07/13/2009  09:37 PM    <DIR>          v3.0
01/20/2010  01:02 PM    <DIR>          v3.5
02/10/2010  03:20 AM    <DIR>          v4.0.21006

更新:不是解决方案,但是另一个很酷的目录格式化列表

dir %WINDIR%\Microsoft.Net\Framework\v* /O:-N /B

v4.0.21006
v3.5
v3.0
v2.0.50727
v1.1.4322
v1.0.3705

1
你想如何使用这些信息?在脚本中吗?否则,我不知道有什么比“dir”更简单的了。 - Dirk Vollmar
这是为了提供支持;我试图帮助我的年迈父亲;想象一下让一个不懂计算机的老人通过电话输入“dir %WINDIR%\Microsoft.Net\Framework\v*”。这启发我认为一定有更好的方法。 - Noah
是时候在你父亲的电脑上安装CrossLoop了! :) - Dave
你应该在问题本身中注明,你对这些信息并不特别关心开发机器。 - Mike Burton
@Noah:“注意:这不是用于开发机器,而只是原装的Windows系统”--你是指“原装”的意思吗?如果是这样,那么你可以通过知道Windows版本来告诉你父亲他所拥有的.NET版本。例如,Windows 7已安装3.5版本,没有SP的XP根本没有安装.NET等。 - Igor Korkhov
@Igor -- 不是字面意思,但是你说得很好,Windows版本可以提供很多有用的关于问题的信息。 - Noah
7个回答

22
reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP" /s /v version | findstr /i version | sort /+26 /r

顶部条目是已安装框架的最新版本。

注意:这不适用于v1.x的框架。

更新:我错过了您要通过电话告诉您父亲的事情。如果是这种情况,上述命令可能不是最好的选择。您最好只告诉您的父亲打开Windows资源管理器并导航到.NET Framework目录,并告诉您其中的数字。


这可以针对网络上的机器完成吗?在我看来,这是最好的答案,因为它提供了“补丁”版本,如4.5和4.5.1。 - BlackICE
1
网络版本很简单: reg query "\<machinename>\HKLM\Software\Microsoft\NET Framework Setup\NDP" /s /v version | findstr /i version | sort /+26 - BlackICE

10
根据您的更新,这是为了帮助非技术人员完成操作,我建议访问Scott Hanselman的网站http://www.smallestdotnet.com(使用Internet Explorer),该网站使用用户代理字符串告诉您所拥有的.NET Framework版本,并提供获取最新版本的建议以最高效的方式进行升级。
旧答案: 使用PowerShell可以实现此操作(尽管存在PowerShell已经意味着至少具有.NET 2.0)。
Get-ChildItem "$($Env:WinDir)\Microsoft.Net\Framework" -i mscorlib.dll -r |
    ForEach-Object { $_.VersionInfo.ProductVersion }

我不知道是否有一种类似的方法可以在老旧的cmd.exe中获取版本信息。


9

只需打开VS2008命令提示符并输入clrver


终端用户的计算机不会安装VS2008。 - Joe
4
感谢在我发现更多信息之前,我建议的答案被更新后给予负面投票。 - Dave
3
我认为应该增加负分对用户的影响(在获得一定声望后免费),这样只有那些完全错误的回答才会受到负分的影响。这个回答并不值得被踩。 - Josh

0

编辑:我的回答与原始问题不相关(在我回答之后进行了编辑)。

根据MSDN的说法,您也可以使用注册表来检查已安装的版本。

此外,this网站声称有一个名为csc的命令行应用程序可供使用 - 尽管我没有尝试过,但我在运行安装时使用注册表方式。


0

CodeProject上发布了一篇文章,可以精确地做到这一点,而且它基于命令行。

希望这可以帮到你。


0
以下代码可以检测计算机是否安装了 .NET Framework 3.5,如果没有安装,则会自动安装。只需在命令提示符中运行即可。
if exist "%WINDIR%\Microsoft.Net\Framework\v3.5" goto end start /wait .\Framework\dotnetfx.exe /q /norestart" :end 

如果您想检测其他版本,只需将v3.5替换为相应的v2.0或v1.0即可。此外,如果未检测到.NET,则会以静默模式进行.NET Framework的安装,即没有用户界面或用户交互。


-2

从该目录列表中获取的最高版本号是已安装的版本。

正如您所看到的,任何版本都包括所有先前的版本,因此检查特定版本的支持=检查该特定目录。


1
“任何版本都包括之前的所有版本” - 不,它并不是这样。例如,v2.0不包括1.0。 - Igor Korkhov
@Igor 嗯,什么?如果你有2.0,所有1.0的应用程序都会运行吗? - Joshua
这个问题与.NET Framework的已安装版本有关,我没有提到在framework v2.0下运行v1.0应用程序的任何内容。 - Igor Korkhov
通常询问“是否安装了.NET框架版本x”的原因是运行为版本x编译的应用程序。 - Joshua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接