根資料夾中的工具資訊清單

除非透過 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 環境變數覆寫,否則 .NET 不會再尋找 Windows 上根資料夾中的本機工具資訊清單檔。 這項變更不會影響 Linux 或 macOS。

先前的行為

先前當 .NET SDK 本機工具搜尋工具資訊清單時,會檢查所有平台上的根資料夾。 搜尋會從目錄樹狀結構的目前目錄繼續到根資料夾,直到找到資訊清單為止。 在每個層級,.NET 會在 .config 子資料夾中搜尋名為 dotnet-tools.json 的工具資訊清單。 在 Windows 系統上,如果找不到其他工具資訊清單,則 SDK 最終會在 C:\.config\dotnet-tools.json 中尋找工具資訊清單。

新的行為

除非透過 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 環境變數覆寫,否則 .NET 預設不再於 Windows 上目前目錄樹狀結構的根資料夾中搜尋。 根據預設,DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 設定為 false

導入的版本

  • .NET SDK 7.0.3xx
  • .NET SDK 7.0.1xx
  • .NET SDK 6.0.4xx
  • .NET SDK 6.0.3xx
  • .NET SDK 6.0.1xx
  • .NET SDK 3.1.4xx

中斷性變更的類型

此變更為行為變更

變更原因

這項變更是為了解決安全性考量。 由於所有使用者都可以在 Windows 上的 C:\ 目錄中建立檔案和資料夾,所以低權限的攻擊者可以劫持 C:\.config\dotnet-tools.json 檔案。 當系統管理員執行 dotnet 工具命令時,此工具可能會從檔案讀取惡意組態資訊,並下載及執行惡意工具。

若要停用新行為,請將 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 環境變數設定為 true1

另請參閱