Gacutil.exe успешно добавляет сборку, но сборка не отображается в проводнике.Зачем? - PullRequest
66 голосов
/ 16 июня 2010

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


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


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

    <b>Assembly successfully added to the cache</b>

    C:\_Dev Projects\VS Projects\bmccormack\CatalogPromotion\CatalogPromotionDll\bin
    \Debug><b>gacutil /l CatalogPromotionDll</b>
    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

    <b>Number of items = 1</b>

Однако сборка не отображается в C: \ WINDOWS \ assembly.

Ответы [ 3 ]

107 голосов
/ 16 июня 2010

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

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

2 голосов
/ 31 октября 2013

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

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

1 голос
/ 05 мая 2017

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

...