.NET Fusion加载程序加载的程序集引用是否与清单中的不同?

.NET Fusion加载程序加载的程序集引用是否与清单中的不同?,.net,assembly-resolution,.net,Assembly Resolution,我以为我知道.NET运行时如何在运行时加载程序集引用,但这种情况让我自己产生了怀疑 我有一个assembly Client.exe,它引用程序集Thirdparty.dll(版本5.1.0.0) Client.exe引用assembly Analytics.dll(2.1.0.0) Thirdparty.dll还引用assembly Analytics.dll(2.0.0.0)(请注意,这是一个不同的版本) 现在,当我运行Client.exe时,它可以加载Thirdparty.dll(5.1.0

我以为我知道.NET运行时如何在运行时加载程序集引用,但这种情况让我自己产生了怀疑

我有一个assembly Client.exe,它引用程序集Thirdparty.dll(版本5.1.0.0)

Client.exe引用assembly Analytics.dll(2.1.0.0)

Thirdparty.dll还引用assembly Analytics.dll(2.0.0.0)(请注意,这是一个不同的版本)

现在,当我运行Client.exe时,它可以加载Thirdparty.dll(5.1.0.0)、Analytics.dll(2.1.0.0)了


我想知道,为什么调用Thirdparty.dll没有失败,因为Thirdparty.dll的清单中有一个Analytics.dll条目(2.0.0.0),而这个版本根本没有加载到AppDomain中。我们有Analytics.dll(2.1.0.0)。我知道在2.0.0.0和2.1.0.0之间没有突破性的更改,但这是否应该是一个例外?

运行Fuslogvw.exe并将其配置为记录所有绑定。您可能会看到程序使用重定向绑定的.config文件、发布者策略文件,或者只是从GAC直接加载版本2.0.0.0。程序集是否已签名?版本号不是未签名程序集标识的一部分。所有程序集均未签名。