我的两台机器的GAC中都有“Microsoft.Web.Services2.dll”V2.0.3.0。
我在这两行中都运行了这一行:
Assembly.Load("Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
(注意版本是2.0.0.0而不是2.0.3.0)
在一台机器上失败(正如我所料)。在另一个它工作,加载的DLL是2.0.3.0。实际上在这台机器上,每个低于3的版本都可以工作(并加载3个)。
你怎么解释这个?
答案 0 :(得分:0)
也许您的Microsoft.Web.Services2.dll
文件夹中有bin
。检查程序集location:
var assembly = Assembly.Load("XXX");
Console.WriteLine(assembly.Location);
答案 1 :(得分:0)
这可能与加载“特定版本”标志有关。如果在Visual Studio中的References文件夹中检查程序集属性,它会显示“特定版本”属性,我认为该属性指定是否链接到程序集的特定版本(默认为false)。默认情况下,它将链接到程序集的任何特定或更新版本,我想这里发生了什么。
因此,Load方法本身可能存在一些选项,指定是仅加载特定版本还是在未找到特定版本时回退到更新版本。
答案 2 :(得分:0)