星期三, 10月 21, 2020

[C#] 更換執行檔參考 dll 位置

專案內會參考很多 dll 或套件,VS 建置預設 exe 和 dll 會放置在 debug 或 release 資料夾內,假如希望把相同功能 dll 整理在同資料夾,就需要在 App.Config 內明確指定 dll 引用位置

建立 DllLocation Solution 內 Core 和 ERP 兩個 Project 來模擬,build 至 release 資料夾後,建立 Lib 資料夾並把 Core.dll 搬移過去,如下圖

   [VS] 更換執行檔參考 dll 位置-1

整理過後執行 exe 檔案,會跳出下圖

[VS] 更換執行檔參考 dll 位置-2

參考該篇官方文章 - <probing> 項目 ,在 AppConfig 內加入設定 probing
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="Lib"/>
    </assemblyBinding>
  </runtime>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
</configuration>
這樣執行檔就可以正常引用 dll 囉

<configuration>  
   <runtime>  
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
         <probing privatePath="bin;bin2\subbin;bin3"/>  
      </assemblyBinding>  
   </runtime>  
</configuration>  
PrivatePath 屬性包含執行時間應搜尋元件的目錄。如果應用程式位於 C:\Program Files\MyApp,則執行時間會尋找在 C:\Program Files\MyApp\Bin、C:\Program Files\MyApp\Bin2\Subbin 和 C:\Program Files\MyApp\Bin3. 中指定程式碼基底的元件 PrivatePath 中指定的目錄必須是應用程式基底目錄的子目錄。

沒有留言:

張貼留言