The following saying is quoted from this article in MSDN.
... strong-name signing makes servicing more complicated. Under current versioning policy, an assembly will always attempt to load the exact version of the assembly it was built against. If, for example, your application was built against version 1.0.0.0 of a strong-named assembly and you fix a bug in the assembly, bumping the version number to 1.0.0.1, the existing application will not find the updated assembly.
Now, suppose that two strong-named assemblies (written in C# or VB.net), namely X and Y, exist and X depends on Y.
- Does the version of Y is stored somewhere in X in compile time?
- Does the public key used in Y is stored somewhere in X to avoid code change attacks?
- If the version of Y is checked when CLR loads it, what happens if Y is loaded dynamically and there is no compile time referencing?
Please post references in your answers, if possible.