为什么安装 .NET SDK 后运行 `dotnet` 命令时会出现“无法加载命令”的错误?

为什么安装 .NET SDK 后运行 `dotnet` 命令时会出现“无法加载命令”的错误?

我关注了官方说明安装最新版本的 .NET SDK。我选择了“包管理器(Microsoft feed)”方法。完成这些说明并运行后dotnet --version,我得到以下输出:

The command could not be loaded, possibly because:
  * You intended to execute a .NET application:
      The application '--version' does not exist.
  * You intended to execute a .NET SDK command:
      No .NET SDKs were found.

Download a .NET SDK:
https://aka.ms/dotnet/download

Learn about SDK resolution:
https://aka.ms/dotnet/sdk-not-found

我阅读了这两个网页,但它们没有为我提供解决方案。其中一个让我回到安装 .NET SDK 的过程的开始。另一个讨论了 SDK 解析的工作原理,主要是在运行应用程序时。但这对我使用 CLI 工具没有帮助dotnet

我发现有趣的是,如果我运行dotnet --info,我会得到以下输出,这证实它认为没有安装 SDK:

Host:
  Version:      7.0.9
  Architecture: x64
  Commit:       8e9a17b221

.NET SDKs installed:
  No SDKs were found.

.NET runtimes installed:
  Microsoft.AspNetCore.App 7.0.9 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 7.0.9 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  DOTNET_ROOT       [/usr/lib/dotnet]

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

我认为这很奇怪,因为如果我使用 APT 检查我安装了哪些软件包,我会看到输出,看起来像是我按照官方安装说明操作后,我确实安装了一个版本的 SDK(7.0.109):

$ sudo apt list --installed | grep dotnet

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

dotnet-apphost-pack-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]
dotnet-host-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]
dotnet-hostfxr-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]
dotnet-runtime-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]
dotnet-sdk-7.0/jammy,now 7.0.306-1 amd64 [installed]
dotnet-targeting-pack-7.0/jammy-updates,jammy-security,now 7.0.109-0ubuntu1~22.04.1 amd64 [installed,automatic]

答案1

我的问题是,我通过混合使用 Microsoft feed 包和 Ubuntu feed 包安装了 .NET SDK 版本 7。这在他们的APT 故障排除步骤。我通过 WSL 使用 22.04,所以这个问题适用于我。

我的解决方案是遵循他们为那些出于任何原因不依赖 Microsoft feed 的人推荐的方法,即从我的系统中完全删除 Microsoft feed,然后按照他们的说明使用 Ubuntu feed 进行安装。完成此操作后,我的dotnet --info输出显示了已安装的 SDK:

.NET SDK:
 Version:   7.0.109
 Commit:    3e9283a8e9

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  23.04
 OS Platform: Linux
 RID:         ubuntu.23.04-x64
 Base Path:   /usr/lib/dotnet/sdk/7.0.109/

Host:
  Version:      7.0.9
  Architecture: x64
  Commit:       8e9a17b221

.NET SDKs installed:
  7.0.109 [/usr/lib/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 7.0.9 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 7.0.9 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]

Other architectures found:
  None

Environment variables:
  DOTNET_ROOT       [/usr/lib/dotnet]

global.json file:
  Not found

Learn more:
  https://aka.ms/dotnet/info

Download .NET:
  https://aka.ms/dotnet/download

因为我使用的是 22.04,但我想安装并使用最新的非预览版 SDK(截至今天为 7),所以我必须先升级到 23.04。我按照在第三方网站上找到的说明进行操作,即运行。sudo do-release-upgrade当我这样做时,它告诉我,我已经在运行可以升级到的最新版本,除非我调整配置文件并重试。所以我按照说明进行操作,然后再次尝试升级,然后我运行的是 23.04,这样我就可以执行上述步骤来安装 .NET SDK 7。

相关内容