如何查询已安装的.NET版本(非.NET Framework)
检查已安装的.NET 6及以上版本的方法
一、命令行快速查看
直接在命令提示符或终端执行以下命令:
- 查看已安装的.NET运行时版本:
dotnet --list-runtimes - 查看已安装的.NET SDK版本:
dotnet --list-sdks
输出结果会列出所有版本的详细信息(含版本号、安装路径、架构),可直接筛选出.NET 6及以上的条目。
二、通过注册表查询
.NET 5及以上版本的安装信息存储在专属注册表路径中,可通过代码读取:
注册表路径
- x64架构:
HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.NETCore.App - x86架构:
HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions\x86\sharedfx\Microsoft.NETCore.App
C#代码示例
using Microsoft.Win32; using System; class Program { static void Main() { CheckDotNetVersions(@"SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.NETCore.App", "x64"); CheckDotNetVersions(@"SOFTWARE\dotnet\Setup\InstalledVersions\x86\sharedfx\Microsoft.NETCore.App", "x86"); } static void CheckDotNetVersions(string registryPath, string architecture) { using RegistryKey? dotnetKey = Registry.LocalMachine.OpenSubKey(registryPath); if (dotnetKey == null) { Console.WriteLine($"未找到{architecture}架构的.NET运行时"); return; } foreach (string versionStr in dotnetKey.GetSubKeyNames()) { if (Version.TryParse(versionStr, out Version? version) && version.Major >= 6) { Console.WriteLine($"{architecture}架构已安装.NET版本: {versionStr}"); } } } }
三、通过代码调用命令行解析输出
如果需要在程序中获取更完整的版本信息,可调用dotnet命令并解析输出:
C#代码示例
using System; using System.Diagnostics; using System.Linq; class Program { static void Main() { var processStartInfo = new ProcessStartInfo { FileName = "dotnet", Arguments = "--list-runtimes", RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; using var process = Process.Start(processStartInfo); if (process == null) { Console.WriteLine("无法启动dotnet命令"); return; } string output = process.StandardOutput.ReadToEnd(); process.WaitForExit(); var dotNet6PlusVersions = output.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries) .Where(line => line.StartsWith("Microsoft.NETCore.App")) .Select(line => { string versionPart = line.Split(' ')[1].Split('+')[0]; return (Line: line, Version: Version.Parse(versionPart)); }) .Where(item => item.Version.Major >= 6); foreach (var item in dotNet6PlusVersions) { Console.WriteLine(item.Line); } } }
内容的提问来源于stack exchange,提问作者MiritH
相关产品推荐
相关产品推荐

