C#idiomatic C#
ca1016fundamentals/code-analysis/quality-rules

Code analysis

CA1016: Mark assemblies with AssemblyVersionAttribute

Learn about code analysis rule CA1016: Mark assemblies with AssemblyVersionAttribute

CA1016 Design enabled by default in .NET 10: As suggestion
Fix is breaking or non-breaking Non-breakingApplicable languages C# and Visual Basic

Cause

The assembly does not have a version number.

Rule description

The identity of an assembly is composed of the following information:

  • Assembly name

  • Version number

  • Culture

  • Public key (for strongly named assemblies).

.NET uses the version number to uniquely identify an assembly and to bind to types in strongly named assemblies. The version number is used together with version and publisher policy. By default, applications run only with the assembly version with which they were built.

How to fix violations

To fix a violation of this rule, add a version number to the assembly by using the System.Reflection.AssemblyVersionAttribute attribute.

When to suppress warnings

Do not suppress a warning from this rule for assemblies that are used by third parties or in a production environment.

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.

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

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

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

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

Example

The following example shows an assembly that has the System.Reflection.AssemblyVersionAttribute attribute applied.

csharp
using System;
using System.Reflection;

[assembly: AssemblyVersionAttribute("4.3.2.1")]
namespace DesignLibrary {}
vb
<Assembly: AssemblyVersionAttribute("4.3.2.1")>
Namespace DesignLibrary
End Namespace

See also