在一个C#的项目里添加引用了好多个dll程序(默认自动复制到本地那种),并通过using namespace;调用的。
现在在主程序里需要调用好多个外部的dll,变了生产项目后,exe同一目录太多dll了。
现在我想按照一定的规则给这些dll分别保存在exe下的不同一个目录,如suport_dll , manager_dll目录下,该如何做?
查了下资料,难道一定要使用映射?

解决方案 »

  1.   

    在应用程序运行的时候,会检查当前程序运行的目录有无所需要的dll文件,如果找不到,就会查找APP.Config配置文件中所配置的目录
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <runtime>
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                <probing privatePath="bin;bin\B"/>
            </assemblyBinding>
        </runtime>
    </configuration>
      

  2.   

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
                <probing privatePath="bin;bin\suport_dll"/> 
            </assemblyBinding> 
      

  3.   

    看来开发前的设计很重要
    对于这个问题,最好在bin目录里再分类建立些子目录
      

  4.   

    楼上已经给出正解,我来做点小提醒:使用私有目录后,千万注意私有目录下的dll别再放到主目录中,那样会导致私有目录下的失效,在版本更新时会带来一定的烦恼
      

  5.   

    1.配置config的probing 节点
    2代码中AppDomainSetup asetup = new AppDomainSetup();
    asetup.ApplicationBase = “目录”;
    asetup.PrivateBinPath = AppDomain.CurrentDomain.BaseDirectory;
      

  6.   

    谢谢大家的回答。
    不好意思,能再说清楚点吗?还是不明白。
    补充一下问题,其实我是想在主程序里分别去引用不同目录(相对目录)里的dll的。privatebinpath不符合我的要求。是不是我这样考虑的策略有问题,大家都不是这样做的?