编译是没有问题的,vs2005可以找到这个dll,但是把exe和dll发布出去后,由于exe和dll不在同一目录里,exe就找不到这个dll,请问有什么解决办法吗?

解决方案 »

  1.   

    在配置文件的configuration节点下加上(似乎要加在最后才行)
      <runtime>
        <gcConcurrent enabled="true" />
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <publisherPolicy apply="yes" />
          <probing privatePath="exe的相对目录" />
        </assemblyBinding>
      </runtime>
      

  2.   

    能拷到同一目录就不存在这个问题了
    请问lake_cx,这个配置文件的文件名有要求么,它是怎么和工程联系起来的?
      

  3.   

    项目-属性-设置
    随便点一下就行了,资源管理器里面就会多一个app.config的文件
    编译后他会与你的exe同名,只不过扩展名是.config
      

  4.   

    可以通过IDE的新建类里头的app.config添加
    然后参照下MSDN了。
      

  5.   

    工程建立和发布时类似的目录结构,把那个dll拷贝到那个目录,然后在你的项目里通过browse引用。发布时就可以用了,也不特殊设定什么。
      

  6.   

    配置文件是有了,但是exe还是找不到dll,是不是配置文件写得不对?
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>  <runtime>
        <gcConcurrent   enabled="true"   />
        <assemblyBinding   xmlns="urn:schemas-microsoft-com:asm.v1">
          <publisherPolicy   apply="yes"   />
          <probing   privatePath="..\"   />
        </assemblyBinding>
      </runtime>
    </configuration>
    dll是在exe的上一级目录里的
      

  7.   

    dll在exe所在的目录的子目录里倒是能找到的,反过来却找不到了
      

  8.   

    privatePath 属性包含运行库应在其中搜索程序集的目录。如果应用程序位于 C:\Program Files\MyApp,那么运行库将在 C:\Program Files\MyApp\Bin、C:\Program Files\MyApp\Bin2\Subbin 和 C:\Program Files\MyApp\Bin3 中查找未指定基本代码的程序集。privatePath 中指定的目录必须是应用程序基目录的子目录。
      

  9.   

    我一般直接用代码,AppDomain.AppendPrivatePath。使用配置文件达到的效果是一样的。