Почему при запуске команд `dotnet` после установки .NET SDK возникает ошибка «Не удалось загрузить команду»?

Почему при запуске команд `dotnet` после установки .NET SDK возникает ошибка «Не удалось загрузить команду»?

Я следовал заофициальные инструкциидля установки последней версии .NET SDK. Я выбрал метод "Package manager (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

Моя проблема была в том, что я установил версию 7 .NET SDK через смесь пакетов Microsoft feed и пакетов Ubuntu feed. Это описано более подробно в ихДействия по устранению неполадок APTЯ использовал 22.04 через WSL, поэтому эта проблема была у меня.

Моим решением было следовать их рекомендуемому подходу для людей, которые не полагаются на канал Microsoft по какой-либо причине, а именно полностью удалить канал Microsoft из моей системы, а затем следовать их инструкциям по установке с использованием канала Ubuntu. После того, как я это сделал, мой 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.

Связанный контент