使用"探测"从其他目录加载dll;

时间:2015-10-14 13:05:45

标签: c# dynamic-linking loadlibrary probing assemblybinding

在编译具有外部引用的C#项目时,引用的dll将被复制到项目的输出路径(在exe旁边)。

运行应用程序时,它希望找到exe旁边的dll。

我正在寻找一种方法将我的dll文件传播到不同的目录Dlls for starters)。并让exe在这些目录中查找dll文件。

示例:

我们假设我们有一个名为" App"位于C:\App\App.exe下,并且它还使用名为" App.dll"的dll文件。目前也位于C:\App下。

我希望创建一个名为C:\App\Dlls的新目录,并将App.dll文件移到那里,同时确保App.exe文件知道在新位置查找dll。

我在互联网上搜索并找到了探测解决方案。这是我的代码(已编辑" App.config"文件):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas=microsoft-com:asm.v1">
      <probing privatePath="Dlls" />
    </assemblyBinding>
  </runtime>
</configuration>

我编译了我的应用程序,创建了Dll目录并将所有dll文件移动到该目录,但应用程序崩溃了。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

找到解决方案,我的基目录中缺少文件App.exe.config。这就是为什么它不起作用。现在一切顺利。