共用方式為


疑難排解應用程式啟動失敗

本文說明應用程式啟動失敗的一些常見原因和可能的解決方案。 它與 框架相依的應用程式相關,這些應用程式依賴於您機器上的 .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 的預覽版通常無法透過套件管理員取得。

您必須安裝適當版本的 .NET Runtime 套件,例如 dotnet-runtime6

或者,在所需 .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 桌面執行階段 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 的預覽版通常無法透過套件管理員取得。

您必須安裝適當版本的 .NET 執行階段套件,例如 dotnet-runtime6dotnet-aspnet6

或者,在所需 .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

如需手動安裝的詳細資訊,請參閱 在 Linux 上安裝 .NET

如需手動安裝的詳細資訊,請參閱 在 macOS 上安裝 .NET

設定向前復原行為

如果您已安裝所需架構的較高版本,您可以配置應用程式的前滾行為,讓應用程式在該較高版本上執行。

在執行應用程式時,可以指定 --roll-forward 命令列選項 或設定 DOTNET_ROLL_FORWARD 環境變數。 根據預設,應用程式需要符合應用程式目標相同主要版本的架構,但可以使用更高的次要或修補程式版本。 不過,應用程式開發人員可能已指定不同的行為。 如需詳細資訊,請參閱 架構相依應用程式向前復原

備註

由於使用此選項可讓應用程式在與其設計的架構版本不同的架構版本上執行,因此可能會因為架構版本之間的變更而導致非預期的行為。

重大突破性變更

針對 .NET 7 和更新版本停用多層查閱

在 Windows 上,在 .NET 7 之前,應用程式可以在多個 安裝位置搜尋架構。

  1. 與以下相關的子目錄:

    • dotnet 透過 執行 dotnet應用程式時可執行檔。
    • DOTNET_ROOT 環境變數 (如果已設定) 時,透過其可執行檔 ()apphost 執行應用程式。
  2. HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation域註冊的安裝位置 (如果已設定) 。

  3. 預設 %ProgramFiles%\dotnet 安裝位置 (或 %ProgramFiles(x86)%\dotnet 64 位元 Windows 上的 32 位元進程)。

此多層查閱行為預設為啟用,但可以透過設定環境變數 DOTNET_MULTILEVEL_LOOKUP=0來停用。

針對以 .NET 7 和更新版本為目標的應用程式,會完全停用多層級查閱,而且只會搜尋一個位置 (找到 .NET 安裝的第一個位置)。 當應用程式透過 dotnet執行時,只會在相對於 的 dotnet子目錄中搜尋架構。 當應用程式透過其可執行檔 ()apphost 執行時,只會在先前列出的第一個位置中搜尋 .NET 的架構。

如需詳細資訊,請參閱 已 停用多層查閱

另請參閱