码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2016-07-06 18:05:04      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

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

最终看到了这篇博客: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的时候,原项目是正确的。而在我自己的项目中是不正确的。

 

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

标签:

原文地址:http://www.cnblogs.com/ZhyjEye/p/5647328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!