我目前正在開發一個需要使用自定義 dll 進行身份驗證的項目。這個 dll 已在生產和測試環境的 GAC 中注冊(他們是這么告訴我的)。公司政策規定您“不應在應用程序的 web.config 文件中包含 dll 引用”,也就是說,您不應具有以下內容:<添加程序集="" ....="" mydll=""> 等。在你的 web.config 中,至少對于我正在談論的這個 dll 來說是這樣。他們說,由于它已在 GAC 中注冊,因此應用程序無論如何都會加載它。問題是,如果您不在 web .config 中添加程序集引用,則應用程序將找不到它,無論他們說什么。因為我確信該 dll 實際上已在 GAC 中注冊,所以我的問題是:無論您是否在 web.config 中添加引用,應用程序都不能加載 dll 嗎?我確信,添加對項目的引用后,dll 的 GAC 位置將存儲在應用程序的程序集中,以便應用程序本身能夠在 GAC 中找到程序集,無論工作系統是什么,給定該 dll 實際上已在工作系統的 GAC 中注冊。但我一定是錯的。它的真正運作方式是什么?我嘗試從 web.config 中刪除 <add assembly ...> 條目:每次在我的測試環境中引用 dll 中的方法時,都會出現運行時錯誤;生產環境中也會發生同樣的事情;
1 回答

30秒到達戰場
TA貢獻1828條經驗 獲得超6個贊
無論您是否在 web.config 中添加引用,應用程序都不能加載 dll 嗎?
按照邏輯,應用程序在啟動時會加載 GAC 中的每個程序集,您能想象那會有多慢嗎?不,事情不是這樣的。
當您在項目中本地引用 DLL 時,您所做的就是將其添加到清單中,告訴應用程序將其作為應用程序的一部分加載。當 CLR 加載時,它首先會檢查 GAC 中是否存在 DLL 的等效版本,如果存在,它將加載該版本,如果不存在,它將嘗試加載本地版本。
- 1 回答
- 0 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消