Unix 文件路径中的反斜杠映射

反斜杠 (\) 字符在 Unix 上的目录和文件名中有效。 从 .NET 8 开始,在 Unix 上,本机 CoreCLR 运行时不再将 \ 字符转换为目录分隔符(正斜杠 (/))。 此项更改使 .NET 应用程序能够位于名称包含反斜杠字符的路径上。 它还允许本机运行时、dotnet 主机以及 ilasmildasm 工具访问其路径包含反斜杠字符的文件。

旧行为

在 Unix 上,本机 CoreCLR 运行时自动将文件路径中的反斜杠 (\) 字符转换为正斜杠 (/)。

新行为

本机 CoreCLR 运行时不会在 Unix 上转换任何文件路径字符。

引入的版本

.NET 8 预览版 1

中断性变更的类型

此更改为行为更改

更改原因

如果不进行此项更改,位于包含反斜杠字符的目录中的 .NET 应用将无法启动。

  • 在应用中将 Path.DirectorySeparatorChar 用作目录分隔符,而不是将其硬编码为 \/
  • 在传递给 dotnet 主机、托管 API 以及 ilasmildasm 工具的 Unix 文件路径中,将 / 用作目录分隔符。
  • 在各种DOTNET_xxx 环境变量中的 Unix 文件路径中,将 / 用作目录分隔符。

受影响的 API