多層級查閱已停用
在 Windows 上,架構相依 .NET 應用程式不再搜尋多個安裝位置中的架構。
先前的行為
在舊版中,架構相依 .NET 應用程式在 Windows 上的多個安裝位置中搜尋架構。 這些位置為:
- 透過 dotnet 執行應用程式時,相對於
dotnet
可執行檔的子目錄。 - 透過其可執行檔 (
apphost
) 執行應用程式時,由DOTNET_ROOT
環境變數的值指定的位置 (如果設定)。 - HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation 中的全域註冊安裝位置 (如果設定)。
- %ProgramFiles%\dotnet 的預設安裝位置 (或針對 64 位元 Windows 上 32 位元程序為 %ProgramFiles(x86)%\dotnet)。
預設會啟用此多層級查閱行為,但可藉由設定環境變數 DOTNET_MULTILEVEL_LOOKUP=0
來停用。
新的行為
以 .NET 7 或更新版本為目標的應用程式只會在一個位置尋找架構,這是找到 .NET 安裝的第一個位置。 透過 dotnet 執行應用程式時,架構只會在與 dotnet
可執行檔相對的子目錄中搜尋。 當透過其可執行檔 (apphost
) 執行應用程式時,架構只會在找到 .NET 的下列位置中搜尋:
DOTNET_ROOT
環境變數的值所指定的位置 (如果設定)。- HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation 中的全域註冊安裝位置 (如果設定)。
- %ProgramFiles%\dotnet 的預設安裝位置 (或針對 64 位元 Windows 上 32 位元程序為 %ProgramFiles(x86)%\dotnet)。
導入的版本
.NET 7
中斷性變更的類型
這項變更會影響二進位相容性。
變更原因
多層級查閱造成許多問題:
- 混淆使用者:即使從私人安裝執行 .NET,應用程式還是可以挑選全域或預設安裝位置。
- 平台之間不一致 (Windows 與非 Windows)。
- 行為中斷,通常是在自動化系統中:新的全域 .NET 安裝可能會影響隔離的組建和測試。
- 效能問題。
建議的動作
請確定所需的 .NET 版本已安裝在單一 .NET 安裝位置。 無法啟動時發出的錯誤訊息包含預期的位置。
受影響的 API
無。