Assembly level attributes interpreted by the C# compiler
Most attributes are applied to specific language elements such as classes or methods; however, some attributes are global—they apply to an entire assembly or module. For example, the AssemblyVersionAttribute attribute can be used to embed version information into an assembly, like this:
[assembly: AssemblyVersion("1.0.0.0")]
Global attributes appear in the source code after any top level using
directives and before any type, module, or namespace declarations. Global attributes can appear in multiple source files, but the files must be compiled in a single compilation pass. Visual Studio adds global attributes to the AssemblyInfo.cs file in .NET Framework projects. These attributes aren't added to .NET Core projects.
Assembly attributes are values that provide information about an assembly. They fall into the following categories:
- Assembly identity attributes
- Informational attributes
- Assembly manifest attributes
Assembly identity attributes
Three attributes (with a strong name, if applicable) determine the identity of an assembly: name, version, and culture. These attributes form the full name of the assembly and are required when you reference it in code. You can set an assembly's version and culture using attributes. However, the name value is set by the compiler, the Visual Studio IDE in the Assembly Information Dialog Box, or the Assembly Linker (Al.exe) when the assembly is created. The assembly name is based on the assembly manifest. The AssemblyFlagsAttribute attribute specifies whether multiple copies of the assembly can coexist.
The following table shows the identity attributes.
Attribute | Purpose |
---|---|
AssemblyVersionAttribute | Specifies the version of an assembly. |
AssemblyCultureAttribute | Specifies which culture the assembly supports. |
AssemblyFlagsAttribute | Specifies a bitwise combination of flags for an assembly, describing just-in-time (JIT) compiler options, whether the assembly is retargetable, and whether it has a full or tokenized public key. |
Informational attributes
You use informational attributes to provide more company or product information for an assembly. The following table shows the informational attributes defined in the System.Reflection namespace.
Attribute | Purpose |
---|---|
AssemblyProductAttribute | Specifies a product name for an assembly manifest. |
AssemblyTrademarkAttribute | Specifies a trademark for an assembly manifest. |
AssemblyInformationalVersionAttribute | Specifies an informational version for an assembly manifest. |
AssemblyCompanyAttribute | Specifies a company name for an assembly manifest. |
AssemblyCopyrightAttribute | Defines a custom attribute that specifies a copyright for an assembly manifest. |
AssemblyFileVersionAttribute | Sets a specific version number for the Win32 file version resource. |
CLSCompliantAttribute | Indicates whether the assembly is compliant with the Common Language Specification (CLS). |
Assembly manifest attributes
You can use assembly manifest attributes to provide information in the assembly manifest. The attributes include title, description, default alias, and configuration. The following table shows the assembly manifest attributes defined in the System.Reflection namespace.
Attribute | Purpose |
---|---|
AssemblyTitleAttribute | Specifies an assembly title for an assembly manifest. |
AssemblyDescriptionAttribute | Specifies an assembly description for an assembly manifest. |
AssemblyConfigurationAttribute | Specifies an assembly configuration (such as retail or debug) for an assembly manifest. |
AssemblyDefaultAliasAttribute | Defines a friendly default alias for an assembly manifest |