• Assembly.LoadFile和Assembly.LoadFrom区别


    做一个热插拔项目时候用Assembly.LoadFile导致了dll(依赖的dll也通过Assembly.LoadFile),使用时候会报错,提示:

    未能加载文件或程序集“PageAdmin.WeiXin.BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。

    网上解决方法是注册一个AssemblyResolve事件

            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
    Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { AssemblyName assemblyName = new AssemblyName(args.Name); return Assembly.LoadFrom("/App_Data/Plugins/" + assemblyName.Name + ".dll"); }

     AssemblyResolve作用是加载的dll如果报错或需要依赖其他dll没有找到,就会触发这个事件,实际测试发现这个事件有坑,会导致死循环(具体原因不详)

    最后改为Assembly.LoadFrom()来解决,LoadFrom导入dll同时会导入同目录下的依赖dll文件,彻底解决了上面的问题。

     

  • 相关阅读:
    C++互斥器:Semaphores
    C++互斥器:Mutex
    内联函数(inline)
    C++显式转换
    线程同步控制
    拷贝构造函数——防篡改
    extern关键字
    虚析构、纯虚析构
    类的友元关系
    char 与 unsigned char的本质区别
  • 原文地址:https://www.cnblogs.com/huaguo/p/8202525.html
Copyright © 2020-2023  润新知