簡體   English   中英

如何將所有引用的 DLL 移動到 c# 中的單獨文件夾中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM