.netassemblyversionattribute

Assembly Version Checking in .Net


I am trying to fully get my head around assembly versions and strong names in .NET

I found This Assembly Versioning Article stating that only Major.Minor.Build is used in version matching. I cannot find anything that can confirm/deny this.

Assembly Version Format ... Revision:
Assemblies with the same name, major, and minor version numbers but different revisions are intended to be fully interchangeable. This would be appropriate to fix a security hole in a previously released assembly.

MS Articles say things like:

The assembly version number is part of an assembly's identity and plays a key part in binding to the assembly and in version policy... Version checking only occurs with strong-named assemblies.

Does this mean that say 1.0.0.0 and 1.0.0.1 are interchangeable in a strong name environment but 1.0.1.1 is not?

What is the definitive answer, please?


Solution

  • I didn't find anything in the linked article stating that only Major.Minor.Build is used in version matching. In fact all four components of a version are used.

    The key point is intended to be interchangeable. Whether or not they are actually interchangeable depends on the author, who is free to respect or ignore the MS guidelines.

    A vendor of a shared assembly that is installed in the GAC can supply a publisher policy file to redirect from old to new version of the assembly. He should only do this if the new version is backward compatible with the old one.