非常郁闷的 .NET中程序集的动态加载

记载这篇文章的原因是我自己遇到了动态加载程序集的问题,而困扰了一天之久。

最终看到了这篇博客:http://www.cnblogs.com/brucebi/archive/2013/05/22/Assembly_Load.html?utm_source=tuicool&utm_medium=referral

但是不是直接看到的原文,而是在这里看到的:http://www.tuicool.com/articles/a2EN7j

具体是什么原因不能加载,我也不清楚,也不能描述清楚,说了,连我自己都不相信。

我的项目需求是,要做MVC的插件化,从网上找了很久,

找到了,http://www.cnblogs.com/cjnmy36723/p/3405272.html#3048029  

找到了 https://github.com/shiningrise/Plugin.git 

下载了项目,在人本来的项目中运行正常,而在我的项目中,运行是不对的。下面我描述为什么不对了。

按照项目介绍,插件能正常加载,而插件引用的程序集是不能加载的,就提示找不到,而且是FileNotFoundException,但是文件确实存在的,应该是没有把程序集加载到Domain当中。

非常郁闷。

被注视掉的部分,就是原来的,在原来的项目中是可以的,我还特地新建了个demo,也是可以的。

非常郁闷。

后来,在网上,我看到了 

这两句

http://www.tuicool.com/articles/a2EN7j

LoadFile(string)

  • Load和LoadFrom的行为那么复杂,而且加载的不一定就是我指定的程序集,如果我真的确定以及肯定就想加载某个程序集文件怎么办呢?这就是为什么会有LoadFile的原因了。其实,在.NET Framework 1.0中并没有LoadFile,因为有了前面提到的原因,才在.NET Framework 1.1中加入了LoadFile。
  • 使用此方法加载的程序集的依赖项不会被自动加载,可以通过AppDomain.AssemblyResolve事件来处理相关程序集的加载。
  • LoadFile把程序集加载到no context中,而且允许多个Identity相同但路径不同的程序集同时存在。

 

然后,把程序内替换成LoadFrom,奇迹般的正确了,而为什么正确了,我也不知道。

非常郁闷。

使用LoadFile的时候,原项目是正确的。而在我自己的项目中是不正确的。

 

posted @ 2016-07-06 16:33  郑延杰  阅读(387)  评论(0编辑  收藏  举报