我在两台机器的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)。
你如何解释这一点?
发布于 2009-12-31 05:01:38
答案在这里:
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/13a95aa8-4dc3-4b91-af19-c460c6e1fca6?prof=required
发布于 2009-12-30 20:43:34
也许您的bin
文件夹中有Microsoft.Web.Services2.dll
。检查程序集location
var assembly = Assembly.Load("XXX");
Console.WriteLine(assembly.Location);
发布于 2009-12-30 20:51:00
这可能与加载“特定版本”标志有关。如果您检查Visual Studio中References文件夹中的程序集属性,它会显示一个"Specific Version“属性,我认为该属性指定是否链接到特定版本的程序集(默认值为false)。默认情况下,它会链接到任何特定的或更新版本的程序集,我想这就是这里发生的事情。
因此,Load方法本身可能有一些选项,用于指定是仅加载特定版本,还是在未找到特定版本时回退到较新的版本。
https://stackoverflow.com/questions/1980005
复制相似问题