使用“探测”从不同目录加载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文件到该目录,但该应用程序崩溃。
我错过了什么?
答
找到解决方案,文件App.exe.config
从我的基本目录中丢失。这就是为什么它不起作用。现在一切顺利。
与什么错误崩溃? –
有:'System.IO.FileNotFoundException:无法加载文件或程序集'。 我也收到'Set connectionId抛出异常。行号5和行位置71'。 – Idanis
那么,创建一个c:\ app \ bin目录并告诉CLR去查找Dll子目录当然是行不通的。请注意托管过程,它使用appname.vshost.exe.config。如果您仍有问题,请使用Fuslogvw.exe。不要这样做,这是一个坏主意。 –