MSBuild 自定义区域性资源处理

从 MSBuild 17.14 开始,默认情况下不再启用自定义区域性资源处理功能。 用户必须显式同意启用此功能。 此更改可防止由于自动检测类似区域性代码的目录而导致的意外行为。

已引入的版本

MSBuild 17.14

注释

由于此更改会影响 MSBuild 的行为,因此会影响两个受支持的 .NET 版本:.NET 10 预览版 1 和 .NET 9.0.2。 .NET SDK 9.0.200 中引入了对自定义区域性更改的透明支持,在 .NET SDK 9.0.300 中使其成为可选择加入的更改。

以前的行为

默认情况下,MSBuild 将名称类似于区域性代码(例如 en-USfr-FR)的目录视为特定文化资源目录。 这种行为有时包括不相关的目录,例如那些具有基于哈希或技术名称的目录,从而在生成过程中导致意外的资源程序集。

新行为

  • 默认情况下禁用自定义文化资源处理。
  • 若要启用此功能,请将项目属性 EnableCustomCulture 设置为 true
  • 使用 CustomCultureExcludeDirectories 属性指定要从自定义区域性处理中排除的以分号分隔的目录名称列表。

破坏性变更的类型

这是行为 变化

更改原因

当目录名恰好与区域性代码匹配时,自动检测特定于区域性的资源目录会导致不可预测的生成行为。 要求显式同意可确保生成过程更具可预测性,而且使用户能够更好地控制资源处理。

如果构建过程依赖于自定义文化资源处理:

  1. 将项目属性 EnableCustomCulture 设置为 true.
  2. (可选)使用 CustomCultureExcludeDirectories 属性排除特定目录,以防止其被视为区域性资源。

受影响的 API

没有。