zoukankan      html  css  js  c++  java
  • 动态加载Assembly的一系列恶心问题


    微软这个垃圾Assembly绝对是设计垃圾。这里小结一下。

    Assembly.Load 根据程序集名加载AssemblyName,考虑到了路径的唯一性等。不会出现重复。

    Assembly.LoadFrom 根据路径加载,同时备份了引用关系,一旦日后需要加载引用,会根据assembly的当前位置搜索。没有考虑路径唯一,如果路径不同的相同程序集,会导致重复加载。

    Assembly.LoadFile,根据路径加载,仅仅加载程序集,不备份引用。

    动态加载,首先会初始化一个Appdomain,必须手动设置BasePath, 否则默认会到.net的安装路径,导致日后的加载失败。


    由于Load是路径唯一的。假设我的运行路径是A,加载的程序集路径是B,当前程序集和加载程序集都引用了xx.dll这个类。

    因此这个类在2个路径都存在。如果使用Load,那么B的xx.dll依赖就不会被加载,从而导致了丢失引用。

    如果使用LoadFrom,那么就会出现重复加载,导致了返回类型是出错。

    最终解决方法。

    appdomain设置为加载点的路径

    同时设置resoliveassembly方法,里面保存所有加载过的地址。当出现无法加载的情况,则读取地址加载。

    另外。。。。

    刚才系统http发现传输数据实在太垃圾了。比webservice的性能差了4倍。 

  • 相关阅读:
    Java学习之Jdk配置
    Socket网络模型之Select模型
    c#之初见反射
    c++读取文件夹中的文件
    C#泛型的初步理解
    C#接口简单介绍
    c#类,属性,方法和对象基本介绍
    事件的基本认识
    委托的基本认识
    在Xshell中使用rz命令上传文件出现乱码且文件无法删除的解决办法
  • 原文地址:https://www.cnblogs.com/zc22/p/1691065.html
Copyright © 2011-2022 走看看