2015-10-14 52 views
0

編譯具有外部引用的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。不要這樣做,這是一個壞主意。 –

回答

2

找到解決方案,文件App.exe.config從我的基本目錄中丟失。這就是爲什麼它不起作用。現在一切順利。