[英]How to move all referenced DLLs into seperate folder in c#?
我有一個包含 3 個項目的解決方案。 其中 2 個項目正在引用 log4net,以及其他幾個 DLL。
當我創建安裝包並為每個項目添加項目輸出時 - 它會將 DLL 放入主“應用程序文件夾”中。 如果我將這些 DLL 拖到我在安裝項目中創建的單獨文件夾中,應用程序將不會運行並顯示“找不到 log4net”。 我真的希望這些 DLL 引用類似於“bin”或任何名稱,而不是它們添加混淆的主文件夾 - 我只希望我的 2 .exe 位於主文件夾中。
我嘗試在每個項目中添加一個引用路徑以指向“bin”文件夾。 然后在安裝項目中,我添加了一個名為“bin”的輸出文件夾並將 DLL 移動到該文件夾中,但仍然不起作用。
我錯過了什么! 我花了幾個小時環顧四周,試圖找出我做錯了什么,也許這就是我出生的方式! 謝謝你的幫助!
您可以使用 app.config 文件中的<probing>
元素為 Fusion(程序集加載程序)指定要搜索的私有路徑。
這允許您指定作為應用程序目錄的子路徑的路徑,Fusion 在嘗試查找要綁定到的程序集時應搜索該路徑。 一個例子(取自文檔頁面)是:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
這意味着 Fusion 將在嘗試綁定到程序集時在 bin、bin2\\subbin(但不是 bin2、IIRC)和 bin3 子目錄中搜索程序集。
為此,我編寫了一個名為PrettyBin的 nuget 包,它向項目添加了一個后期構建目標,將 dll 移動到“lib”子文件夾,並修改 app.config 以查看那里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.