An assembly is uniquely identified by four parts—its name, version, culture, and public key. The assembly resolver, a part of the common language run-time that is responsible for locating assemblies, uses this four-part information to locate the correct assembly.
The Name part of the assembly name typically corresponds to the underlying filename (without the extension) of the assembly.
Strictly speaking, the Name of the assembly need not match the underlying filename. However, keeping the two names in sync makes the job of the assembly resolver (and humans) easier.
Each assembly has a four-part version number of the form Major.Minor.Build.Revision. This version number is set at build time using an assembly-level ...