.net程序集解析处理程序在一台计算机上失败,但在另一台计算机上成功

.net程序集解析处理程序在一台计算机上失败,但在另一台计算机上成功,.net,assembly-resolution,assemblyresolve,.net,Assembly Resolution,Assemblyresolve,我注意到.net在两台不同的机器上解析程序集的方式有所不同。在一台机器中,它似乎是在逐行执行,而在另一台机器中则是按方法执行 假设我在Test.dll中有以下内容: public class Test() { static Test() { AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; } private static Assembly Curr

我注意到.net在两台不同的机器上解析程序集的方式有所不同。在一台机器中,它似乎是在逐行执行,而在另一台机器中则是按方法执行

假设我在
Test.dll中有以下内容:

public class Test()
{
    static Test()
    {
        AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
    }

    private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        if (args.Name == "Dep.dll")
        {
            return LocalMethodThatResolves(args); // local method in this class
        }
        else
        {
            return HelperInDependentAssembly.Resolve(args); // this method lives in Dep.dll
        }
    }
}
好机器会发生什么:

需要解析
Dep.dll
,因此它进入
CurrentDomain\u AssemblyResolve
,然后在
if
逻辑内部进行本地解析

坏机器会发生什么:

Dep.dll
需要解析,因此在进入解析方法之前,它会注意到存在于另一个程序集(与
Dep.dll
相同)中的方法被调用,并最终导致
StackOverflowException

有人能解释为什么会这样吗

(代码在.net 4.5中运行)