我有3個項目(GUI,BL和DAL)的解決方案。 DAL程序集已簽署並部署在GAC中。.NET程序集加載優先級
當我構建解決方案時,DAL被編譯並且程序集放置在主項目的bin文件夾中。但是當我運行應用程序時,它會加載GAC版本而不是本地版本。爲什麼是這樣?
我意識到,因爲GAC中的版本不是最新版本,並且某些方法丟失了,儘管它編譯得很好。
GAC是否優先於本地bin文件夾?
韓國社交協會提前
我有3個項目(GUI,BL和DAL)的解決方案。 DAL程序集已簽署並部署在GAC中。.NET程序集加載優先級
當我構建解決方案時,DAL被編譯並且程序集放置在主項目的bin文件夾中。但是當我運行應用程序時,它會加載GAC版本而不是本地版本。爲什麼是這樣?
我意識到,因爲GAC中的版本不是最新版本,並且某些方法丟失了,儘管它編譯得很好。
GAC是否優先於本地bin文件夾?
韓國社交協會提前
簡答題是,GAC優先於本地文件。
這是一個不同於我們在原生dll世界中使用的行爲(不包括某些總是從SYSTEM32加載的系統dll,無論如何)。
爲什麼?
想象一下,如果程序集有一個錯誤,那麼現在有多個應用程序使用相同的程序集,那麼如何修復所有應用程序? 很難開始搜索所有驅動程序上的所有應用程序,因此更容易將單個程序集部署到GAC並一次性修復所有應用程序。
至於你的問題,如果你改變了API,你需要改變該程序集的程序集版本,這樣Fusion融合引擎會選取本地文件夾中的版本。
Tks的答案,特別是關於版本控制的最後部分。 – Dante 2009-10-22 10:31:22