この記事では、アプリケーション起動エラーの一般的な理由と考えられる解決策について説明します。 これは、コンピューター上の .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 | Microsoft.NETCore.App Microsoft.AspNetCore.App |
| .NET Desktop Runtime | Microsoft.NETCore.App Microsoft.WindowsDesktop.App |
| .NET ランタイム | Microsoft.NETCore.App |
| ランタイムのダウンロード | 含まれているフレームワーク |
|---|---|
| コア ランタイム ASP.NET | 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
スクリプトを使用したインストールの詳細については、「スクリプトを使用した .NET のインストール」を参照してください。
バイナリをダウンロードする
.NET のバイナリ アーカイブは 、ダウンロード ページからダウンロードできます。 ランタイム ダウンロードの [バイナリ] 列から、必要なアーキテクチャに一致するバイナリ リリースをダウンロードします。 ダウンロードしたアーカイブを、エラー メッセージで指定された ".NET の場所" に抽出します。
手動インストールの詳細については、「Windows への .NET のインストール」を参照してください。
手動インストールの詳細については、「.NET on Linux のインストール」を参照してください。
手動インストールの詳細については、「macOS への .NET のインストール」を参照してください。
ロールフォワード動作を構成する
必要なフレームワークのより高いバージョンが既にインストールされている場合は、ロールフォワード動作を構成することで、その上位のバージョンでアプリケーションを実行できます。
アプリケーションを実行するときに、 --roll-forward コマンド ライン オプション を指定するか、 DOTNET_ROLL_FORWARD 環境変数を設定できます。
既定では、アプリケーションには、アプリケーションがターゲットとするのと同じメジャー バージョンと一致するフレームワークが必要ですが、より高いマイナー バージョンまたはパッチ バージョンを使用できます。 ただし、アプリケーション開発者が別の動作を指定している可能性があります。 詳細については、「 フレームワークに依存するアプリのロールフォワード」を参照してください。
注
このオプションを使用すると、アプリケーションを設計したバージョンとは異なるフレームワーク バージョンで実行できるため、フレームワークのバージョン間の変更により意図しない動作が発生する可能性があります。
重大な変更
.NET 7 以降で複数レベルの参照が無効になっている
Windows では、.NET 7 より前のアプリケーションでは、複数の インストール場所にあるフレームワークを検索できました。
サブディレクトリの相対位置:
-
dotnetdotnetを介してアプリケーションを実行する場合は実行可能です。 -
DOTNET_ROOT実行可能ファイル (apphost) を介してアプリケーションを実行するときに環境変数 (設定されている場合)。
-
HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocationにグローバルに登録されたインストール場所 (設定されている場合)。%ProgramFiles%\dotnetの既定のインストール場所 (または 64 ビット Windows の 32 ビット プロセスの場合は%ProgramFiles(x86)%\dotnet)。
この複数レベルの参照動作は既定で有効になっていますが、環境変数を DOTNET_MULTILEVEL_LOOKUP=0設定することで無効にすることができます。
.NET 7 以降を対象とするアプリケーションの場合、複数レベルの参照は完全に無効になり、.NET インストールが見つかった最初の場所である 1 つの場所のみが検索されます。 アプリケーションが dotnet経由で実行される場合、フレームワークは dotnetに対するサブディレクトリ内でのみ検索されます。 アプリケーションが実行可能ファイル (apphost) を介して実行される場合、フレームワークは、.NET が見つかった前に示した最初の場所でのみ検索されます。
詳細については、「 複数レベルの参照が無効になっている」を参照してください。
こちらも参照ください
.NET