.NET SDK をインストールした後、`dotnet` コマンドを実行すると、「コマンドを読み込めませんでした」というエラーが表示されるのはなぜですか?

.NET SDK をインストールした後、`dotnet` コマンドを実行すると、「コマンドを読み込めませんでした」というエラーが表示されるのはなぜですか?

私は公式指示最新バージョンの .NET SDK をインストールします。「パッケージ マネージャー (Microsoft フィード)」方式を選択しました。これらの手順を完了して を実行すると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

私は両方の Web ページを読みましたが、解決策は示されていません。1 つは、.NET SDK のインストール プロセスの最初に戻ります。もう 1 つは、主にアプリケーションの実行時に 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 の 1 つのバージョン (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フィードパッケージとUbuntuフィードパッケージを組み合わせて.NET SDKバージョン7をインストールしたことでした。これについては、APT トラブルシューティング手順私は WSL 経由で 22.04 を使用していたので、この問題が私にも発生しました。

私の解決策は、何らかの理由で 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 にアップグレードする必要がありました。これは、サードパーティの Web サイトで見つけた手順に従って実行しましたsudo do-release-upgrade。この操作を実行すると、構成ファイルを調整して再試行しない限り、アップグレード可能な最新バージョンが既に実行されているというメッセージが表示されました。そのため、指示に従って再度アップグレードを試行し、23.04 を実行して上記の手順を実行し、.NET SDK 7 をインストールしました。

関連情報