dnx 指令碼略過 global.json SDK 選取

dnx 和 dnx.cmd 指令碼不再使用 .NET 多工器來選取 SDK 版本。 他們會直接找到最新安裝的 SDK,這樣就能繞過工作目錄中的任何 global.json 檔案。

所推出的版本

.NET 10 SDK 10.0.302、10.0.400 及 .NET 11 預覽版 6

以前的行為

先前,dnx 指令碼會呼叫 dotnet dnx,而後者會仰賴 .NET muxer 根據工作目錄中的任何 global.json 檔案來選擇 SDK 版本。 如果global.json釘選的是 .NET 10 之前的 SDK 版本,腳本會因以下錯誤而失敗:

Unrecognized command or argument 'execute'

從 .NET 10 SDK 10.0.302(及更新版本)和 .NET 11 預覽版 6 開始,dnx和dnx.cmd腳本用dotnet --list-sdks來識別最新安裝的 SDK。 接著他們直接dotnet exec <sdk-path>/dotnet.dll dnx調用,繞過 .NET muxer 和任何 global.json SDK 釘選。

破壞性變更的類型

此變更為行為變更。

變更原因

部分 .NET CLI 指令,包括 dnx,被視為版本無關的功能,應始終與最新安裝的 SDK 一同執行。 依賴 global.json 意味著,那些為了降低受影響建置變更所帶來風險而將 SDK 版本固定在較舊版本的使用者,也會無意間導致 dnx 失效。 在固定為早於 .NET 10 之 SDK 的資料夾中,dnx 命令無法使用,因而導致像 Copilot CLI 這類工具出現令人困惑的錯誤,且在某些情況下甚至會逾時。

若要恢復先前由 .NET 多工器和 global.json 控制 SDK 選擇的行為,請明確地執行 dotnet dnx,而不是執行 dnx 指令碼。

受影響的 API

None.