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