Dot-Net

.NET 程序集載入優先級

  • October 22, 2009

我有一個包含 3 個項目(GUI、BL 和 DAL)的解決方案。DAL 程序集在 GAC 中籤名和部署。

當我建構解決方案時,將編譯 DAL,並將程序集放置在主項目的 bin 文件夾中。但是當我執行應用程序時,它會載入 GAC 版本而不是本地版本。為什麼是這樣?

我意識到這是因為 GAC 中的版本不是最新版本,並且缺少一些方法,儘管它編譯得很好。

GAC 是否優先於本地 bin 文件夾?

提前謝謝

簡短回答的,GAC 優先於本地文件。

這與我們在本機 dll 世界中習慣的行為不同(不包括某些系統 dll,無論如何總是從 SYSTEM32 載入)。

為什麼?

想像一下,您有多個應用程序具有相同的程序集,現在程序集有一個錯誤,您如何修復所有應用程序?很難開始搜尋所有驅動程序上的所有應用程序,更容易將單個程序集部署到 GAC 並一次修復所有應用程序。

至於您的問題,如果您更改 API,則需要更改該程序集的程序集版本,這樣融合引擎將獲取本地文件夾中的版本。

引用自:https://stackoverflow.com/questions/1606273