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


я запускаю GacUtil.exe из командной строки Visual Studio 2010 для регистрации dll (CatalogPromotion.dll) в GAC. После запуска утилиты, он говорит Assembly Successfully added to the cache и под управлением gacutil /l CatalogPromotionDll показывает, что GAC содержит сборку, но я не вижу сборку, когда я перехожу к C:WINDOWSassembly из Проводника Windows. Почему я не могу видеть сборку в WINDOWSassembly из Проводника Windows, но я могу видеть ее с помощью gacutil.exe?


фон: Вот что я набрал в командной строке для VS Tools:


    C:_Dev ProjectsVS ProjectsbmccormackCatalogPromotionCatalogPromotionDllbin
    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 ProjectsVS ProjectsbmccormackCatalogPromotionCatalogPromotionDllbin
    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:WINDOWSassembly.

3 64

3 ответа:

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

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

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

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

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