根文件夹中的工具清单

除非通过 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 环境变量重写,否则 .NET 不再在 Windows 的根文件夹中查找本地工具清单文件。 此更改不会影响 Linux 或 macOS。

以前的行为

以前,.NET SDK 本地工具在搜索工具清单时检查了所有平台上的根文件夹。 搜索继续从当前目录向上目录树到根文件夹,直到找到清单。 在每个级别,.NET 都会在 .config 子文件夹中搜索名为 dotnet-tools.json的工具清单。 在 Windows 系统上,如果未找到其他工具清单,SDK 最终会在 C:\.config\dotnet-tools.js 中查找工具清单。

新行为

除非通过 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.js 。 当管理员运行 dotnet 工具命令时,该工具可能会从文件中读取恶意配置信息,并下载并运行恶意工具。

若要禁用新行为,请将 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 环境变量 true 设置为或 1

另请参阅