Assembly.Load奇怪的行为

时间:2009-12-30 12:40:03

标签: .net assemblies version gac

我的两台机器的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个)。

你怎么解释这个?

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)