アプリの起動失敗のトラブルシューティング
この記事では、アプリケーションの起動失敗の一般的な理由と考えられる解決策について説明します。 これは、ご利用のコンピューター上の .NET インストールに依存するフレームワーク依存のアプリケーションに関連しています。
必要な .NET バージョンが既にわかっている場合は、.NET ダウンロードからダウンロードできます。
.NET のインストールが見つかりません
.NET のインストールが見つからない場合、アプリケーションは次のようなメッセージで起動に失敗します。
You must install .NET to run this application.
App: C:\repos\myapp\myapp.exe
Architecture: x64
Host version: 7.0.0
.NET location: Not found
You must install .NET to run this application.
App: /home/user/repos/myapp/myapp
Architecture: x64
Host version: 7.0.0
.NET location: Not found
これはパッケージの組み合わせが原因である可能性があります。
グローバル インストールは、次の場所に登録されます: /etc/dotnet/install_location
。 詳細については、インストール場所に関するページを参照してください。
You must install .NET to run this application.
App: /home/user/repos/myapp/myapp
Architecture: x64
Host version: 7.0.0
.NET location: Not found
グローバル インストールは、次の場所に登録されます: /etc/dotnet/install_location
。 詳細については、インストール場所に関するページを参照してください。
エラー メッセージには、.NET をダウンロードするためのリンクが含まれています。 そのリンクから、適切なダウンロード ページにアクセスできます。 .NET のダウンロードから .NET バージョン (Host version
で指定されたもの) を選択することもできます。
必要な .NET バージョンのダウンロード ページで、エラー メッセージに一覧表示されているアーキテクチャに一致する .NET ランタイムのダウンロードを見つけます。 その後、インストーラーをダウンロードして実行することでインストールできます。
.NET は、さまざまな Linux パッケージ マネージャーから入手できます。 詳細については、「Linux に .NET をインストールする」を参照してください。 (.NET のプレビュー バージョンは、通常、パッケージ マネージャー経由では入手できません)。
dotnet-runtime6
など、適切なバージョンの NET ランタイム パッケージをインストールする必要があります。
または、必要な .NET バージョンのダウンロード ページで、指定されたアーキテクチャのバイナリをダウンロードすることもできます。
必要なフレームワークが見つからない
必要なフレームワークや互換性のあるバージョンが見つからない場合は、次のようなメッセージでアプリケーションの起動に失敗します。
You must install or update .NET to run this application.
App: C:\repos\myapp\myapp.exe
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: C:\Program Files\dotnet\
The following frameworks were found:
6.0.2 at [c:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You must install or update .NET to run this application.
App: /home/user/repos/myapp/myapp
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: /usr/share/dotnet/
The following frameworks were found:
6.0.2 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]
You must install or update .NET to run this application.
App: /home/user/repos/myapp/myapp
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: /usr/local/share/dotnet/
The following frameworks were found:
6.0.2 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
このエラーは、見つからないフレームワークの名前、バージョン、アーキテクチャと、期待されているインストールの場所を示します。 アプリケーションを実行するために、指定された ".NET の場所" に互換性のあるランタイムをインストールすることができます。 インストールされているものよりも下位のバージョンがアプリケーションのターゲットであり、より上位のバージョンでアプリケーションを実行したい場合、アプリケーションのロールフォワード動作を構成することもできます。
互換性のあるランタイムをインストールする
エラー メッセージには、見つからないフレームワークをダウンロードするためのリンクが含まれています。 このリンクから、適切なダウンロード ページにアクセスできます。
または、.NET ダウンロード ページからランタイムをダウンロードすることもできます。 .NET ランタイムのダウンロードは複数あります。
次の表は、それぞれのランタイムに含まれるフレームワークを示しています。
ランタイムのダウンロード | 含まれるフレームワーク |
---|---|
ASP.NET Core ランタイム | Microsoft.NETCore.App Microsoft.AspNetCore.App |
.NET デスクトップ ランタイム | Microsoft.NETCore.App Microsoft.WindowsDesktop.App |
.NET ランタイム | Microsoft.NETCore.App |
ランタイムのダウンロード | 含まれるフレームワーク |
---|---|
ASP.NET Core ランタイム | Microsoft.NETCore.App Microsoft.AspNetCore.App |
.NET ランタイム | Microsoft.NETCore.App |
欠落しているフレームワークを含むランタイム ダウンロードを選択し、それをインストールします。
必要な .NET バージョンのダウンロード ページで、エラー メッセージに一覧表示されているアーキテクチャに一致するランタイム ダウンロードを見つけます。 インストーラーをダウンロードする必要がある可能性があります。
.NET は、さまざまな Linux パッケージ マネージャーから入手できます。 詳細については、Linux での .NET のインストールに関するページを参照してください。 (.NET のプレビュー バージョンは、通常、パッケージ マネージャー経由では入手できません)。
dotnet-runtime6
や dotnet-aspnet6
など、適切なバージョンの NET ランタイム パッケージをインストールする必要があります。
または、必要な .NET バージョンのダウンロード ページで、指定されたアーキテクチャのバイナリをダウンロードすることもできます。
起動に失敗したアプリケーションでそのようなインストールを使用している場合、次のような ".NET の場所" がエラー メッセージに表示されることがほとんどです。
%ProgramFiles%\dotnet
/usr/share/dotnet/
/usr/local/share/dotnet/
その他のオプション
他にも検討できるインストールと回避策のオプションがあります。
dotnet-install スクリプトの実行
お使いのオペレーティング システムに対応した dotnet-install スクリプトをダウンロードします。 エラー メッセージの情報に基づき、オプションを指定してスクリプトを実行します。 dotnet-install スクリプトのリファレンス ページには、使用できるすべてのオプションが記載されています。
PowerShell を起動し、実行します。
dotnet-install.ps1 -Architecture <architecture> -InstallDir <directory> -Runtime <runtime> -Version <version>
たとえば、前のセクションのエラー メッセージは次のようになります。
dotnet-install.ps1 -Architecture x64 -InstallDir "C:\Program Files\dotnet\" -Runtime dotnet -Version 5.0.15
スクリプトの実行が無効であるというエラーが発生した場合、スクリプトの実行を許可するように実行ポリシーを設定する必要がある場合があります。
Set-ExecutionPolicy Bypass -Scope Process
スクリプトを使用したインストールの詳細については、「PowerShell オートメーションを使用してインストールする」を参照してください。
./dotnet-install.sh --architecture <architecture> --install-dir <directory> --runtime <runtime> --version <version>
たとえば、前のセクションのエラー メッセージは次のようになります。
./dotnet-install.sh --architecture x64 --install-dir /usr/share/dotnet/ --runtime dotnet --version 5.0.15
スクリプトを使用したインストールの詳細については、「スクリプトでのインストール」を参照してください。
./dotnet-install.sh --architecture <architecture> --install-dir <directory> --runtime <runtime> --version <version>
たとえば、前のセクションのエラー メッセージは次のようになります。
./dotnet-install.sh --architecture x64 --install-dir /usr/local/share/dotnet/ --runtime dotnet --version 5.0.15
スクリプトを使用したインストールの詳細については、「bash オートメーションを使用してインストールする」を参照してください。
バイナリをダウンロードする
.NET のバイナリ アーカイブはダウンロード ページからダウンロードできます。 ランタイム ダウンロードの [バイナリ] 列から、必要なアーキテクチャに一致するバイナリ リリースをダウンロードします。 ダウンロードしたアーカイブを、エラー メッセージで指定された ".NET の場所" に展開します。
手動インストールの詳細については、「Windows に .NET をインストールする」を参照してください
手動インストールの詳細については、「Linux に .NET をインストールする」を参照してください
手動インストールの詳細については、「macOS に .NET をインストールする」を参照してください
ロールフォワード動作を構成する
必要なフレームワークの上位バージョンが既にインストールされている場合、アプリケーションのロールフォワード動作を構成して、その上位バージョンでアプリケーションを実行できます。
アプリケーションを実行するときに、--roll-forward
コマンド ライン オプションを指定するか DOTNET_ROLL_FORWARD
環境変数を設定することができます。
既定では、アプリケーションのターゲットとメジャー バージョンが同じであるフレームワークがアプリケーションには必要ですが、マイナーまたはパッチ バージョンはそれよりも上位のものを使用できます。 ただし、アプリケーションの開発者によって、異なる動作が指定されている場合があります。 詳細については、「フレームワーク依存のアプリをロールフォワードする」を参照してください。
注意
このオプションを使用すると、設計と異なるバージョンのフレームワークでアプリケーションが実行されるため、フレームワークのバージョン間の変更が原因で意図しない動作が発生する場合があります。
重大な変更
.NET 7 以降では複数レベルの検索が無効
Windows で、.NET 7 より前は、複数のインストール場所にあるフレームワークをアプリケーションで検索できました。
次の配下のサブディレクトリ:
dotnet
実行可能ファイル (dotnet
経由でアプリケーションを実行する場合)。- (設定されている場合の)
DOTNET_ROOT
環境変数 (その実行可能ファイル (apphost
) 経由でアプリケーションを実行する場合)。
HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation
の、グローバルに登録されたインストールの場所 (設定されている場合)%ProgramFiles%\dotnet
(または、64 ビット Windows 上の 32 ビット プロセスの場合は%ProgramFiles(x86)%\dotnet
) の既定のインストール場所
この複数レベルの検索動作は既定で有効ですが、環境変数 DOTNET_MULTILEVEL_LOOKUP=0
を設定して無効化できます。
.NET 7 以降をターゲットとするアプリケーションの場合、複数レベルの検索は完全に無効であり、1 つの場所 (.NET のインストールが最初に見つかった場所) のみが検索されます。 dotnet
経由でアプリケーションを実行する場合、フレームワークは dotnet
配下のサブディレクトリからのみ検索されます。 その実行可能ファイル (apphost
) 経由でアプリケーションを実行する場合、フレームワークは、前にリストした場所のうち .NET が最初に見つかった場所からのみ検索されます。
詳細については、「複数レベルの検索の無効化」を参照してください。
こちらもご覧ください
.NET