zoukankan      html  css  js  c++  java
  • 非常郁闷的 .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的时候,原项目是正确的。而在我自己的项目中是不正确的。

  • 相关阅读:
    LineageOS将会重生 CyanogenMod会继续下去
    著名第三方ROM Cyanogen Mod宣布关闭
    Service Worker API (mozilla) vs Service Workers (google)
    Service Worker 入门
    Web新技术:PWA
    (OK) 编译 cm-13-kiwi for (华为 荣耀 5X)
    4
    3
    2
    1
  • 原文地址:https://www.cnblogs.com/ZhyjEye/p/5647328.html
Copyright © 2011-2022 走看看