CA1824: Mark assemblies with NeutralResourcesLanguageAttribute

Property Value
Rule ID CA1824
Title Mark assemblies with NeutralResourcesLanguageAttribute
Category Performance
Fix is breaking or non-breaking Non-breaking
Enabled by default in .NET 8 As suggestion

Cause

An assembly contains a ResX-based resource but does not have the System.Resources.NeutralResourcesLanguageAttribute applied to it.

Rule description

The NeutralResourcesLanguageAttribute attribute informs the resource manager of an app's default culture. If the default culture's resources are embedded in the app's main assembly, and ResourceManager has to retrieve resources that belong to the same culture as the default culture, the ResourceManager automatically uses the resources located in the main assembly instead of searching for a satellite assembly. This bypasses the usual assembly probe, improves lookup performance for the first resource you load, and can reduce your working set.

Tip

See Package and deploy resources for the process that ResourceManager uses to probe for resource files.

Fix violations

To fix a violation of this rule, add the attribute to the assembly, and specify the language of the resources of the neutral culture.

To specify the neutral language for resources

  1. In Solution Explorer, right-click your project, and then select Properties.

  2. Select the Package tab.

    Note

    If your project is a .NET Framework project, select the Application tab, and then select Assembly Information.

  3. Select the language from the Neutral language or Assembly neutral language drop-down list.

  4. Select OK.

When to suppress warnings

It's permissible to suppress a warning from this rule. However, startup performance might degrade. To suppress this warning, add dotnet_diagnostic.CA1824.severity = none to your .globalconfig or .editorconfig file.

Suppress a warning

If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.

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

To disable the rule for a file, folder, or project, set its severity to none in the configuration file.

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

For more information, see How to suppress code analysis warnings.

See also