共用方式為


全域組件快取

備註

本文專屬於 .NET Framework。 它不適用於較新的 .NET 實作,包括 .NET 6 和更新版本。

已安裝 Common Language Runtime 的每部電腦都有稱為全域程式集緩存的電腦全計算機程式代碼快取。 全域程式集緩存會儲存電腦上數個應用程式所特別指定的元件。

只有在需要時,才應該將元件安裝到全域程式集緩存中來共用元件。 一般指導方針是,除非明確需要共用元件,否則請將元件相依性保留為私用,並在應用程式目錄中尋找元件。 此外,無需將元件安裝至全域組件快取即可讓 COM Interop 或非受控程式碼存取它們。

備註

在某些情況下,您明確不想將元件安裝到全域程式集緩存。 如果你將應用程式的某個組件放在全域組合快取中,就無法再使用 xcopy 命令來複製應用程式目錄進而進行複製或安裝。 您也必須在全域程式集緩存中移動元件。

有兩種方式可將元件部署至全域程式集緩存:

  • 使用專為全域組件快取設計的安裝程式。 這是將元件安裝到全域程式集緩存的慣用選項。

  • 使用稱為 「全域程式集緩存」工具(Gacutil.exe)的開發人員工具,由 Windows SDK 提供。

    備註

    在部署案例中,使用 Windows Installer 將元件安裝到全域程式集緩存中。 僅在開發案例中使用全域程式集緩存工具,因為它不會提供元件參考計數,以及使用 Windows Installer 時提供的其他功能。

從 .NET Framework 4 開始,全域程式集緩存的預設位置 會%windir%\Microsoft.NET\assembly。 在舊版 .NET Framework 中,預設位置 是%windir%\assembly

系統管理員通常會使用訪問控制清單 (ACL) 來控制寫入和執行存取權,來保護 systemroot 目錄。 因為全域程式集緩存是安裝在 systemroot 目錄的子目錄中,所以它會繼承該目錄的 ACL。 建議只允許具有系統管理員許可權的使用者從全域程式集緩存中刪除檔案。

部署在全域程式集緩存中的元件必須具有強名稱。 將元件新增至全域程式集緩存時,會針對組成元件的所有檔案執行完整性檢查。 快取會執行這些完整性檢查,以確保當檔案已變更,但資訊清單未反映變更時,元件並未遭到竄改。

另請參閱