已安装 .NET 运行时,但程序仍提示未安装
运行一个 C# 编写的程序,弹出如下提示:

实际上系统已经安装 .NET Runtime 8.0,不过还是尝试通过错误消息中的链接下载 .NET Desktop Runtime 8.0 并重新安装。再次运行程序,仍然提示以上错误。
当前系统情况如下:
通过 WinGet 安装了:
Microsoft.DotNet.Runtime.6
Microsoft.DotNet.Runtime.7
Microsoft.DotNet.Runtime.8
Microsoft.DotNet.Runtime.9
Microsoft.DotNet.DesktopRuntime.6
Microsoft.DotNet.DesktopRuntime.7
Microsoft.DotNet.DesktopRuntime.8
Microsoft.DotNet.DesktopRuntime.9
通过 Scoop 安装了 donet-sdk (9.0.102)
安装了 Visual Studio 2022 以及 .Net 桌面开发组件
用 which dotnet
查看 dotnet
命令的路径:
C:\Program Files\dotnet\dotnet.exe
命令并非是 Scoop 安装的版本,应该是通过 Visual Studio 安装到系统的。
如果系统中没有安装 which
命令,可以用以下命令替代:
- CMD:
where dotnet
- PowerShell:
(Get-Command dotnet).Source
运行 dotnet --info
查看信息:
.NET SDK:
Version: 9.0.102
Commit: cb83cd4923
Workload version: 9.0.100-manifests.4a54b1a6
MSBuild version: 17.12.18+ed8c6aec5
运行时环境:
OS Name: Windows
OS Version: 10.0.19045
OS Platform: Windows
RID: win-x64
Base Path: C:\Program Files\dotnet\sdk\9.0.102\
已安装 .NET 工作负载:
没有要显示的已安装工作负载。
配置为在安装新清单时使用 loose manifests。
Host:
Version: 9.0.1
Architecture: x64
Commit: c8acea2262
.NET SDKs installed:
9.0.102 C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 8.0.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 9.0.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 9.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.12 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 9.0.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Other architectures found:
x86 [C:\Program Files (x86)\dotnet]
registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]
Environment variables:
DOTNET_ROOT [C:\scoop\apps\dotnet-sdk\current]
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
结果中可以发现,.Net 8.0 运行时确实已经安装了,默认的 .Net SDK 是 9.0 版本。从安装路径可以得知,这并非是 Scoop 安装的版本。也许是程序优先检测到了 .Net SDK 9.0 自带的运行时,而没有使用已安装的 .Net Runtime 8.0。
通过 Scoop 安装 .Net Runtime 8.0:
powershellscoop install versions/dotnet-sdk-lts
再次用 which dotnet
查看 dotnet
命令的路径:
C:\scoop\apps\dotnet-sdk-lts\current\dotnet.exe
已经是 Scoop 安装的版本了。
运行 dotnet --info
查看信息:
.NET SDK:
Version: 8.0.405
Commit: fb1830d421
Workload version: 8.0.400-manifests.c7afa696
MSBuild version: 17.11.9+a69bbaaf5
运行时环境:
OS Name: Windows
OS Version: 10.0.19045
OS Platform: Windows
RID: win-x64
Base Path: C:\scoop\apps\dotnet-sdk-lts\current\sdk\8.0.405\
已安装 .NET 工作负载:
配置为在安装新清单时使用 loose manifests。
没有要显示的已安装工作负载。
Host:
Version: 8.0.12
Architecture: x64
Commit: 89ef51c5d8
.NET SDKs installed:
8.0.405 [C:\scoop\apps\dotnet-sdk-lts\current\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 8.0.12 [C:\scoop\apps\dotnet-sdk-lts\current\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 8.0.12 [C:\scoop\apps\dotnet-sdk-lts\current\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 8.0.12 [C:\scoop\apps\dotnet-sdk-lts\current\shared\Microsoft.WindowsDesktop.App]
Other architectures found:
x86 [C:\Program Files (x86)\dotnet]
registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]
Environment variables:
DOTNET_ROOT [C:\scoop\apps\dotnet-sdk-lts\current]
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
再次运行原来的程序,成功~