Dot-Net
.NET 程序集載入優先級
我有一個包含 3 個項目(GUI、BL 和 DAL)的解決方案。DAL 程序集在 GAC 中籤名和部署。
當我建構解決方案時,將編譯 DAL,並將程序集放置在主項目的 bin 文件夾中。但是當我執行應用程序時,它會載入 GAC 版本而不是本地版本。為什麼是這樣?
我意識到這是因為 GAC 中的版本不是最新版本,並且缺少一些方法,儘管它編譯得很好。
GAC 是否優先於本地 bin 文件夾?
提前謝謝
簡短回答是的,GAC 優先於本地文件。
這與我們在本機 dll 世界中習慣的行為不同(不包括某些系統 dll,無論如何總是從 SYSTEM32 載入)。
為什麼?
想像一下,您有多個應用程序具有相同的程序集,現在程序集有一個錯誤,您如何修復所有應用程序?很難開始搜尋所有驅動程序上的所有應用程序,更容易將單個程序集部署到 GAC 並一次修復所有應用程序。
至於您的問題,如果您更改 API,則需要更改該程序集的程序集版本,這樣融合引擎將獲取本地文件夾中的版本。