Before i start describing about the version number in assembly, lets understand why we need them. Much before Microsoft released .Net Framework, thats in the era of Visual Basic, Most of the developers had problem in maintaining different version of DLL once deployed in GAC(Global Assembly Cache) and this problem was called has DLL HELL PROBLEM . In order to come up with this issues microsoft introduced versioning of assembly.
Versioning on assembly can be done only if they have strong name. In order to place assembly in GAC it must have a strong name. An assembly can have version information in 2 ways
1. The assembly’s version number, which, together with the assembly name and culture information, is part of the assembly’s identity. This number is used by the runtime to enforce version policy and plays a key part in the type resolution process at run time.
2. An informational version, which is a string that represents additional version information included for informational purposes only.
Assembly Version Number
Each assembly has a version number though which it can be identified. As such, two assemblies that differ by version number are considered by the runtime to be completely different assemblies. This version number is physically represented as a four-part string with the following format:
For example, version 1.5.1254.0 indicates as follows
1 as the major version, 5 as the minor version, 1254 as the build number, and 0 as the revision number.
The version number is stored in the assembly manifest along with other identity information, including the assembly name and public key, as well as information on relationships and identities of other assemblies connected with the application.