使用“探测”从不同目录加载dll

使用“探测”从不同目录加载dll

问题描述:

编译具有外部引用的C#项目时,所引用的dll被复制到项目的输出路径(exe旁边)。使用“探测”从不同目录加载dll

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

我正在寻找一种方法来将我的dll文件传播到不同的目录Dll中以供初学者使用)。并让exe文件查找这些目录中的dll文件。

例子:

比方说,我们有一个名为“应用程序”位于C:\App\App.exe下的应用程序,并且还使用了被称为“App.dll”这是目前也位于C:\App下一个dll文件。

我想创建一个名为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

有:'System.IO.FileNotFoundException:无法加载文件或程序集'。 我也收到'Set connectionId抛出异常。行号5和行位置71'。 – Idanis

+0

那么,创建一个c:\ app \ bin目录并告诉CLR去查找Dll子目录当然是行不通的。请注意托管过程,它使用appname.vshost.exe.config。如果您仍有问题,请使用Fuslogvw.exe。不要这样做,这是一个坏主意。 –

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