C 程式集系列11,全域性程式集快取

2021-09-26 04:05:49 字數 1709 閱讀 4883

全域性程式集快取(gac:global assembly cache)用來存放可能被多次使用的強名稱程式集。當主程式需要引導程式集的時候,優先選擇到全域性程式集快取中去找尋需要的程式集。

為什麼需要全域性程式集快取?

假設程式a引用b程式集,程式c也引用b程式集,在這種情況下,可以把b程式集放到乙個全域性程式集快取中是明智的做法。

□ 使用全域性快取程式集

→刪除f盤as資料夾中所有dll和exe字尾的檔案

→編譯cow.cs成程式集

→把剛建立的farm.dll存放到全域性程式集快取中

報錯是因為,非強名稱程式集是無法儲存到全域性程式集快取中的。

→重新編譯cow.cs,這次使用密匙

→再次把farm.dll存放到全域性程式集快取中

如果想把乙個強名稱程式集從全域性快取中取出:gacutil -u farm

→編譯mainclass.cs成可執行檔案,引用farm.dll

→用記事本開啟mainclass.cs,修改如下,儲存

using system;
class mainclass
}
→再次編譯mainclass.cs,引用現在已經在全域性程式集快取中的farm.dll

→把farm.dll從as資料夾中刪除,因為已經存放到全域性程式集快取中了

→再次執行mainclass.exe和anothermainclass.exe

說明已經在使用全域性程式集快取中的farm.dll了。

□ 全域性快取程式集在**

在"c:\windows\microsoft.net\assembly\gac_msil\farm\v4.0_3.3.3.3__863de8402b3a9978"資料夾中

總結:

○ 當程式集可能被多次引用,可以考慮把程式集放入全域性程式集快取

○ 自定義程式集和.net預設的一些程式集,都被放在"c:\windows\microsoft.net\assembly\gac_msil"了這個全域性程式集快取資料夾中

○ c#編譯器會先優先到全域性程式集快取中找尋程式集

「c#程式集系列」包括:

程式集,模組, 應用程式域,全域性程式集快取

1 私有程式集 我們通常用到的就是私有程式集。這種情況下,我們建立本地應用程式專案 或元件 編譯後就生成dll或exe型別的私有程式程式集。當我們在其他客戶應用程式中使用這類程式集時,只需要新增引用。當這樣的程式集被多個應用程式域使用時,每個應用程式域需要複製該程式集,程序中也將存在該程式集的多個副...

將程式集新增到全域性程式集快取

自已建立了乙個封裝自定義控制項的類庫,如果想讓它裡面的控制項在每個新開啟 的工具箱中都自動出現,可以將類庫編譯的程式集新增到全域性應用程式集快取gac中 c windows assembly 新增的前提條件 需要為類庫專案建立簽名,方法是 在專案的屬性視窗中選擇 簽名 然後選中 為程式集簽名 核取方...

C 程式集系列08,設定程式集版本

區別乙個程式集,不僅僅是程式集名稱,還包括程式集版本 程式集公匙 程式集文化等,本篇體驗通過介面和編碼設定程式集版本。通過visual studio設定程式集版本 右鍵專案,選擇 屬性 選擇 應用程式 點選 程式集資訊 設定如下,點選確定 點選專案properties資料夾下的assemblyinf...