I thought I knew how .NET runtime loads the assembly references at runtime, but this situation has raised doubts for myself.
I have an assembly Client.exe that refers to an assembly Thirdparty.dll (version 5.1.0.0).
Client.exe refers to assembly Analytics.dll (2.1.0.0)
Thirdparty.dll also refers to assembly Analytics.dll (2.0.0.0) (Note this is a different version).
Now when I run Client.exe, it loads Thirdparty.dll (5.1.0.0), Analytics.dll (2.1.0.0) just fine.
I wonder, why does the call to Thirdparty.dll not fail since the manifest of Thirdparty.dll has an entry for Analytics.dll (2.0.0.0) and this version is not loaded in AppDomain at all. We have Analytics.dll (2.1.0.0). I know there are no breaking changes across 2.0.0.0 and 2.1.0.0, but should this be a case for exception at all?