A colleague recently asked me the difference between the different version properties available in a .NET assembly. I had read about this recently in Jeff Richters outstanding CLR via C# but couldn’t remember the semantics off the top of my head.
- AssemblyFileVersion: The version number you want the public to see. Ideally you’d want the build tool (e.g. CSC.exe or AL.exe) to automatically update the build and revision number number, but this doesn’t happen. This version number can be seen when using Windows Explorer and is typically used to identify a specific assembly version when trouble shooting.
- AssemblyInformationalVersion: This version number is stored in the Win32 version resource and is for informational purposes. This number exists to indicate which version of the product includes this assembly.
- AssemblyVersion: This value is stored in the AssemblyDef manifest metadata table. THe CLR uses this version number when binding to strongly named assemblies. This number is used to uniquely identify an assembly, and is used to tightly bind the assembly as a reference within a product.