There are three assembly version attributes. What are differences? Is it ok if I use AssemblyVersion
and ignore the rest?
MSDN says:
AssemblyVersion:
Specifies the version of the assembly being attributed.
AssemblyFileVersion:
Instructs a compiler to use a specific version number for the Win32 file version resource. The Win32 file version is not required to be the same as the assembly's version number.
AssemblyInformationalVersion:
Defines additional version information for an assembly manifest.
This is a follow-up to What are the best practices for using Assembly Attributes?
AssemblyVersion: Specifies the version of the assembly being attributed. AssemblyFileVersion: Instructs a compiler to use a specific version number for the Win32 file version resource.
It's the version number given to file as in file system. It's displayed by Windows Explorer, and never used by . NET framework or runtime for referencing.
The AssemblyVersion attribute assigns the version number of the assembly, and this is embedded in the manifest. Version information for an assembly consists of the following four values : a major and minor version number, and two further optional build and revision numbers. Major Version.
I can get the Assembly Version with the following line of code: Version version = Assembly. GetEntryAssembly(). GetName().
AssemblyVersion
Where other assemblies that reference your assembly will look. If this number changes, other assemblies must update their references to your assembly! Only update this version if it breaks backward compatibility. The AssemblyVersion
is required.
I use the format: major.minor (and major for very stable codebases). This would result in:
[assembly: AssemblyVersion("1.3")]
If you're following SemVer strictly then this means you only update when the major changes, so 1.0, 2.0, 3.0, etc.
AssemblyFileVersion
Used for deployment (like setup programs). You can increase this number for every deployment. Use it to mark assemblies that have the same AssemblyVersion
but are generated from different builds and/or code.
In Windows, it can be viewed in the file properties.
The AssemblyFileVersion is optional. If not given, the AssemblyVersion is used.
I use the format: major.minor.patch.build, where I follow SemVer for the first three parts and use the buildnumber of the buildserver for the last part (0 for local build). This would result in:
[assembly: AssemblyFileVersion("1.3.2.42")]
Be aware that System.Version names these parts as major.minor.build.revision
!
AssemblyInformationalVersion
The Product version of the assembly. This is the version you would use when talking to customers or for display on your website. This version can be a string, like '1.0 Release Candidate'.
The AssemblyInformationalVersion
is optional. If not given, the AssemblyFileVersion is used.
I use the format: major.minor[.patch] [revision as string]. This would result in:
[assembly: AssemblyInformationalVersion("1.3 RC1")]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With