Dot-Net

Gacutil.exe 成功添加程序集,但在資源管理器中無法查看程序集。為什麼?

  • June 16, 2010

我正在從 Visual Studio 命令提示符 2010 中執行 GacUtil.exe,以將 dll (CatalogPromotion.dll) 註冊到 GAC。執行該實用程序後,它顯示Assembly Successfully added to the cache並執行gacutil /l CatalogPromotionDll顯示 GAC 包含程序集,但是當我從 Windows 資源管理器導航到 C:\WINDOWS\assembly 時看不到程序集。 為什麼我在 Windows 資源管理器中看不到 WINDOWS\assembly 中的程序集,但我可以使用 gacutil.exe 看到它?


背景:這是我在 VS Tools 的命令提示符中輸入的內容:


C:\_Dev Projects\VS 項目\bmccormack\CatalogPromotion\CatalogPromotionDll\bin
\調試> **gacutil /i CatalogPromotionDll.dll**
Microsoft (R) .NET 全域程序集記憶體實用程序。版本 4.0.30319.1
版權所有 (c) 微軟公司。版權所有。

   **程序集成功添加到記憶體**

C:\_Dev Projects\VS 項目\bmccormack\CatalogPromotion\CatalogPromotionDll\bin
\Debug> **gacutil /l CatalogPromotionDll**
Microsoft (R) .NET 全域程序集記憶體實用程序。版本 4.0.30319.1
版權所有 (c) 微軟公司。版權所有。

全域程序集記憶體包含以下程序集:
CatalogPromotionDll,版本=1.0.0.0,文化=中性,PublicKeyToken=9188a175
f199de4a,處理器架構=MSIL

   **項目數 = 1**

但是,該程序集不會顯示在 C:\WINDOWS\assembly 中。

那是因為您使用的是 .NET 4.0 版本的 gacutil.exe。它將程序集儲存在不同的GAC 中,即 c:\windows\microsoft.net\assembly 中的那個。儲存所有 .NET 4.0 程序集的位置。該文件夾沒有外殼擴展處理程序,文件夾按原樣可見。您可以使用 Windows 資源管理器進行查看。您將看到 GAC 文件夾的內部結構。找回您的程序集應該不會有任何問題,GAC 並不是特別複雜。

如果該程序集旨在由針對早期版本 .NET 的應用程序使用,那麼您應該使用儲存在 C:\Program Files\Microsoft SDKs\Windows\v6.0A\ 中的 .NET 2.0 版本的 gacutil.exe斌

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