Por que recebo o erro "O comando não pôde ser carregado" ao executar comandos `dotnet` após instalar o SDK do .NET?

Por que recebo o erro "O comando não pôde ser carregado" ao executar comandos `dotnet` após instalar o SDK do .NET?

Eu segui oinstruções oficiaispara instalar a versão mais recente do SDK do .NET. Eu escolhi o método "Gerenciador de pacotes (feed da Microsoft)". Depois de concluir essas instruções e executar dotnet --version, obtenho a seguinte saída:

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

Eu li essas duas páginas da web, mas elas não me fornecem soluções. Um deles me leva de volta ao início do processo de instalação do .NET SDK. O outro fala sobre como funcionam as resoluções do SDK, principalmente quando os aplicativos são executados. Mas isso não me ajuda com a ferramenta CLI dotnet.

Achei interessante que, se eu executasse dotnet --info, obtive a seguinte saída, que confirma que ele acha que nenhum SDK está instalado:

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

Acho isso estranho porque se eu usar o APT para verificar quais pacotes instalei, vejo uma saída que faz parecer que depois de seguir as instruções oficiais de instalação, eu realmente tinha uma versão do SDK instalada (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]

Responder1

Meu problema era que eu havia instalado a versão 7 do SDK do .NET por meio de uma combinação de pacotes de feed da Microsoft e pacotes de feed do Ubuntu. Isso é descrito com mais detalhes em seuEtapas de solução de problemas do APT. Eu estava usando o 22.04 via WSL, então esse problema se aplicava a mim.

Minha solução foi seguir a abordagem recomendada para pessoas que não dependem do feed da Microsoft por qualquer motivo, que era remover completamente o feed da Microsoft do meu sistema e seguir as instruções para instalar usando o feed do Ubuntu. Depois de fazer isso, minha dotnet --infosaída mostra o SDK instalado:

.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

Como eu estava usando o 22.04, mas queria instalar e usar a versão mais recente do SDK (que é 7 atualmente), tive que primeiro atualizar para o 23.04. Fiz isso seguindo as instruções que encontrei em um site de terceiros, que deveriam executar o sudo do-release-upgrade. Quando fiz isso, ele me disse que eu já estava executando a versão mais recente para a qual poderia atualizar, a menos que eu ajustasse um arquivo de configuração e tentasse novamente. Então, segui as instruções, tentei a atualização novamente e estava executando o 23.04 para poder executar as etapas acima para instalar o .NET SDK 7.

informação relacionada