C#中,分了几个project,其中一个编译输出windows application,假设这个project名字叫exe.其余编译成dll. 编译成dll的project,输出路径到一个dll目录中(和可执行文件不在同一目录). 在exe里面应用了其余的project,如果把copy local设为true,则会把dll文件copy到exe目录中,而把copy local设为false,编译能通过,但是执行的时候会发现无法引用dll,请教如何解决这个问题

解决方案 »

  1.   

    DLL:动态连接库.DLL不放在../DLL/下当然不行啦..
      

  2.   

    为什么要设置Copy Local为false?
      

  3.   

    可以通过使用 <probing> 元素设置程序集路径
    <configuration>
       <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
             <probing privatePath="bin;bin2\subbin;bin3"/>
          </assemblyBinding>
       </runtime>
    </configuration>
      

  4.   

    如果你这个应用程序工程里面直接用到了另外一个工程里面的任何一个元素,这时你就会在该应用工程中添加一个那个所谓的"dll"工程(是引用工程不是去直接指定一个文件,以免不清楚原理而发生错误)这时那个copy local的属性为true的,有些引用的copy local属性为false是因为这个引用不是直接的引用而是别的工程里面用到了这个引用 这个工程又被现在的应用或者别的工程引用了,这样被引进的工程所引用到的引用库逻辑上也是被现在的这个工程引用了(间接引用,不过不是直接它来引用而是引用的工程来引用所以不需要复制到本地这个复制到的地方由被引用的工程来决定)