Dot-Net

何時以及何時不安裝到 GAC 中?

  • January 31, 2009

什麼時候應該安裝到 GAC 中,什麼時候不應該?(實際上,我指的是在客戶購買我們的產品後安裝在他們的機器上)。

  1. 我有一個僅用於我的一個應用程序(GAC 或無 GAC)的程序集?
  2. 我有一個所有應用程序共享的程序集(GAC 或非 GAC)?
  3. 我的所有應用程序都可能使用不同版本的程序集(GAC 或非 GAC)?

這是三種情況……但我相信還有更多。我不一定只尋找這三個問題的答案。

類似的問題:使用 GAC 的優點和缺點是什麼?

一般 MS 指南

GAC 實際上是 Microsoft 通用 .NET 庫的儲存庫。是的,他們也讓開發人員使用它,但根據經驗,如果您不需要 GAC,請不要使用它。如果沒有傷害,請保持簡單和本地化。

  • 我只會出於性能原因考慮 GAC,例如,如果您有一些大型程序集,請嘗試將它們放入 GAC 和NGEN中。它應該會顯著提高性能。Microsoft 在安裝期間為所有標準 .NET 框架程序集執行此操作(現在您知道為什麼安裝需要這麼長時間了)。Paint.NET 也這樣做(以改善他們的應用程序的啟動時間)。然而,我們大多數人並不在大型框架或 Photoshop 競爭對手上工作,所以大多數時候,在 GAC 中進行組裝所帶來的性能提升是微乎其微的。不值得放棄簡單的 x-copy 部署。
  • 一些開發人員可能會使用 GAC 來確保權限不足的使用者無法刪除或修改他們的程序集。
  • 對於其他人來說,這可能是出於版本控制的原因,但在這裡你真的應該重新考慮。我不會重複已經說過的話,你可以在這裡閱讀為什麼

並且不要忘記,一旦您想部署到 GAC,您的安裝程序將需要管理員權限,您幾乎可以忘記點擊一次部署等…

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