我有一个程序,会从内存中反射加载一个dll(dll不在硬盘上),但是那个dll有app.config文件,我反射的时候如何让程序集带上app.config?

解决方案 »

  1.   

    做不到,除非你自己打开那个xml文件解析,dll使用的config文件是当前项目的config,也就是说,你只要把那个dll的config文件的内容原封不动的复制到当前项目exe的那个config里面,就能访问到了。
      

  2.   

    一种强行指定dll assembly读取其相应*.dll.config配置文件的方法(又名:如何创建.net 的DCOM) "
    http://www.cnblogs.com/Winston/archive/2009/04/24/1443044.html类项目中的配置文件app.config在打包安装后的信息获取的问题:
    http://www.cnblogs.com/ppp-213/archive/2009/04/08/1431471.html
      

  3.   

    另一种可能是使用AppDomain,因为在创建新的AppDomain时可以指定配置文件:
        AppDomainSetup setupInfo = new AppDomainSetup();
        setupInfo.ConfigurationFile = fi.FullName + ".config";
        AppDomain newDomain = AppDomain.CreateDomain(
                                "Plugin-" + assembly.FullName,
                                null,
                                setupInfo
                                );
    然后调用newDomain.Load加载dll。这种方法要求你考虑AppDomain间的通讯的一些问题,例如对象的序列化以及生命周期等,如果你的工程是 主程序 + plugin结构的,可以考虑这种方案。