Gacutil.exe成功添加了程序集,但程序集在资源管理器中无法查看。为什么?

时间:2010-06-16 14:40:03

标签: .net windows assemblies gac gacutil

我正在Visual Studio Command Prompt 2010中运行GacUtil.exe,以便向GAC注册dll(CatalogPromotion.dll)。运行该实用程序后,它显示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 Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin
    \Debug>gacutil /i CatalogPromotionDll.dll
    Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
    Copyright (c) Microsoft Corporation.  All rights reserved.

    Assembly successfully added to the cache

    C:\_Dev Projects\VS Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin
    \Debug>gacutil /l CatalogPromotionDll
    Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
    Copyright (c) Microsoft Corporation.  All rights reserved.

    The Global Assembly Cache contains the following assemblies:
      CatalogPromotionDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9188a175
    f199de4a, processorArchitecture=MSIL

    Number of items = 1

但是,程序集不会显示在C:\ WINDOWS \ assembly中。

3 个答案:

答案 0 :(得分:107)

那是因为您使用的是.NET 4.0版本的gacutil.exe。它将程序集存储在不同的 GAC中,即c:\ windows \ microsoft.net \ assembly中的那个。存储所有.NET 4.0程序集的位置。该文件夹没有shell扩展处理程序,文件夹按原样可见。您可以使用Windows资源管理器查看。您将看到GAC文件夹的内部结构。你找回你的装配应该没有任何问题,GAC并不是特别复杂。

如果程序集旨在供面向早期版本.NET的应用程序使用,那么您应该使用存储在C:\ Program Files \ Microsoft SDKs \ Windows \ v6中的.NET 2.0版本的gacutil.exe .0A \ BIN

答案 1 :(得分:2)

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

的不同位置

接受的答案不正确。使用.NET 4.0 gacutil安装一个针对3.5或更早版本的运行时编译的程序集就可以了,并将程序集放在OP所期望的目录中,c:\ windows \ assembly。

答案 2 :(得分:1)

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