69

我正在从 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 中。

4

3 回答 3

111

那是因为您使用的是 .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斌

于 2010-06-16T17:40:52.560 回答
4

路径是 -> C:\Windows\Microsoft.NET\assembly\GAC_MSIL,其中存储了 .net 4.0 版本的所有程序集

于 2017-05-05T07:55:44.837 回答
2

这是因为您要安装到 GAC 中的程序集是针对 4.0 运行时编译的。4.0 GAC 程序集存储在不同的位置 c:\windows\microsoft.net\assembly。

接受的答案不正确。使用 .NET 4.0 gacutil 安装针对 3.5 或更早运行时编译的程序集工作得很好,并将程序集放置在 OP 期望的目录中,c:\windows\assembly。

于 2013-10-30T20:56:44.730 回答