首先,程序集加载器会搜索应用程序的当前工作目录,其中包括应用程序本身所在的目录。
如果在当前工作目录中找到多个同名的 DLL 文件,则程序集加载器将按照特定的顺序来决定哪个 DLL 文件被加载。这个加载顺序通常是基于操作系统和 .NET Framework 的规范,但一般来说,首先搜索会先找到的 DLL 文件,然后是子目录中的 DLL 文件。
最终,程序集加载器会根据搜索的顺序尝试加载 DLL 文件,通常会选择第一个匹配到的 DLL 文件来进行加载。
因此,在这种情况下,具体引用哪一个 DLL 文件可能会有一定的随机性,取决于操作系统和 .NET Framework 的实际实现规则。
如果希望明确指定应用程序加载哪个具体的 DLL 文件,可以使用 AssemblyResolve 事件来进行自定义程序集解析逻辑,从而控制应用程序加载 DLL 的行为。