Gacutil.exe успешно добавляет сборку, но сборка не просматривается в проводнике. Зачем?

Я запускаю GacUtil.exe из Visual Studio Command Prompt 2010 для регистрации DLL (CatalogPromotion.dll) в GAC. После запуска утилиты он говорит Assembly Successfully added to the cache, а запуск gacutil /l CatalogPromotionDll показывает, что GAC содержит сборку, но я не вижу сборки, когда я перехожу к сборке C:\WINDOWS\из проводника Windows. Почему я не вижу сборку в WINDOWS\сборке из проводника Windows, но я вижу ее с помощью 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.

Ответ 1

Это потому, что вы используете версию gacutil.exe.NET 4.0. Он хранит сборку в другом GAC, который находится в каталоге c:\windows\microsoft.net \. Где хранятся все сборки .NET 4.0. Для этого нет обработчика расширения оболочки, папки видны как есть. Вы можете посмотреть в проводнике Windows, вы увидите внутреннюю структуру папок GAC. У вас не должно возникнуть проблем с поиском вашей сборки, GAC не особенно усложняется.

Если сборка предназначена для использования приложением, предназначенным для более ранней версии .NET, то вы должны использовать версию gacutil.exe.NET 2.0, хранящуюся в C:\Program Files\Microsoft SDK\Windows\v6.0A\Bin

Ответ 2

Это связано с тем, что сборка, которую вы устанавливаете в GAC, была скомпилирована с использованием среды выполнения 4.0. 4.0 сборки GAC хранятся в другом месте c:\windows\microsoft.net\assembly.

Принятый ответ неверен. Использование .NET 4.0 gacutil для установки сборки, скомпилированной с таргетингом на 3.5 или более раннюю рабочую среду, работает очень хорошо и поместит сборку в каталог, который ожидал OP, c:\windows\assembly.

Ответ 3

Путь → C:\Windows\Microsoft.NET\assembly\GAC_MSIL, где все сборки хранятся для версии .net 4.0