请问如何加载一个dll,这个dll不在系统目录下,不和exe在同一目录,不使用反射加载。似乎要设私有路径,但是如何用法代码来设置私有路径呢?
这个dll的位置是在程序运行起来之后才知道的。

解决方案 »

  1.   

    可以将该dll文件放到和程序同一个目录下,即当前目录下,这样可以不用写路径就可以了。用application.startuppath来获取当前程序的运行目录就可以了。
      

  2.   

    在同一个目录下就直接dllimport
      

  3.   

    记得可以使用XML定义DLL的保存目录
    具体忘记了,LZ可以找找
      

  4.   

    一个 AppDomain 加载程序集时, 搜索的路径是可以定制的,
    楼主看下它的
    AppendPrivatePath() 函数
    RelativeSearchPath 属性等,你的 dll 是何种类型的, win32 dll, com dll, .net assembly dll?那几个设置方式是否可以设置为 BaseDirectory 之外的没有尝试过,
    设置为 BaseDirectory 目录之下的我试过是可以的.
      

  5.   

    找到了:
    <?xml version="1.0"?>
    <configuration>
       <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
             <probing privatePath="dll"/>
          </assemblyBinding>
       </runtime>
    </configuration>关键是这一句:<probing privatePath="dll"/>
    将这些保存为一个文件:
    比如你的EXE文件是:Program.exe的话,这个文件就是Program.exe.config
      

  6.   

    楼主说运行起来才知道是哪个目录, 楼上的办法不行AppDomain.CurrentDomain.AppendPrivatePath 
      

  7.   

    运行起来后可获得的是什么?一个DLL的路径?
    之后要怎么使用其中的内容?