CA1824:用 NeutralResourcesLanguageAttribute 标记程序集

属性
规则 ID CA1824
标题 用 NeutralResourcesLanguageAttribute 标记程序集
类别 “性能”
修复是中断修复还是非中断修复 非中断
在 .NET 8 中默认启用 作为建议

原因

程序集包含基于 ResX 的资源,但没有向其应用 System.Resources.NeutralResourcesLanguageAttribute

规则说明

NeutralResourcesLanguageAttribute 属性通知应用默认区域性的资源控制器。 如果默认区域性的资源嵌入在应用的主程序集中,并且 ResourceManager 必须检索与默认区域性属于与同一区域性的资源,则 ResourceManager 会自动使用位于主程序集内的资源,而不是搜索附属程序集。 这样可绕过常用程序集探测,提高所加载的第一个资源的查找性能,并可缩小工作集。

提示

有关 ResourceManager 用于探测资源文件的过程,请参阅打包和部署资源

解决冲突

若要解决此规则的冲突,请将属性添加到程序集,并指定非特定区域性的资源的语言。

指定资源的非特定语言

  1. 在“解决方案资源管理器”中,右键单击项目,然后选择“属性” 。

  2. 选择“包”选项卡。

    注意

    如果你的项目是一个 .NET Framework 项目,请选择“应用程序”选项卡,然后选择“程序集信息” 。

  3. 从“非特定语言”或程序集非特定语言”下拉列表中选择语言 。

  4. 选择“确定”。

何时禁止显示警告

允许禁止显示此规则发出的警告。 但是,启动性能可能会降低。 若要禁止显示此警告,请向 .globalconfig 或 .editorconfig 文件添加 dotnet_diagnostic.CA1824.severity = none

抑制警告

如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。

#pragma warning disable CA1824
// The code that's violating the rule is on this line.
#pragma warning restore CA1824

若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none

[*.{cs,vb}]
dotnet_diagnostic.CA1824.severity = none

有关详细信息,请参阅如何禁止显示代码分析警告

另请参阅