[英]Assembly.Load strange behavior
我在我的两台机器的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)。
你怎么解释呢?
也许您的bin
文件夹中有Microsoft.Web.Services2.dll
。 检查组装位置 :
var assembly = Assembly.Load("XXX");
Console.WriteLine(assembly.Location);
这可能与加载“特定版本”标志有关。 如果在Visual Studio的“引用”文件夹中检查程序集属性,它将显示“特定版本”属性,我认为该属性指定是否链接到程序集的特定版本(默认为false)。 默认情况下,它将链接到该程序集的任何特定版本或较新版本,我猜这里发生了什么。
因此,Load方法本身可能包含一些选项,用于指定是仅加载特定版本还是在未找到特定版本的情况下回退到较新版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.