Как извлечь блок из GAC?

Заявленный тип a - A.

У A есть только два метода: один принимает A (и b и c являются экземплярами A), а другой - D (и ни b, ни c не являются экземплярами D).

Итак, первый метод соответствует, а второй нет. Таким образом, первый метод выбирается компилятором.

Этот метод переопределен в B, и конкретный тип a - B, поэтому печатается «B и A».

Метод B.show(B) не переопределяет метод A.show(A), поскольку он не принимает тот же тип, что и аргумент.

132
задан starblue 14 April 2009 в 18:08
поделиться

9 ответов

Я использовал совет от этой статьи для получения блока от GAC.

Вытащите DLL из GAC

DLLs однажды развертывается в GAC (обычно расположенный в c:\windows\assembly) can†™t просматриваться или использоваться в качестве нормального файла DLL. Они can†™t быть непосредственно сосланным из проекта VS. Разработчики обычно сохраняют копию исходного файла DLL и отсылают к нему в проекте при разработке (дизайн) время, которое использует блок от GAC во время времени выполнения проекта.

Во время выполнения (время выполнения), если блок, как находят, подписывается и развертывается в GAC, CLR автоматически поднимает блок с GAC вместо DLL, на который ссылаются в течение времени проектирования в VS. В случае, если разработчик удалил исходный DLL или не имеет его по некоторым причинам, существует способ получить файл DLL от GAC. Выполните следующие шаги для копирования DLL с GAC

  1. Выполненный regsvr32/u C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll

    • shfusion.dll является расширением проводника DLL, который дает отличный взгляд папке GAC. Нерегистрация этого файла удалит средство просмотра кэша сборок, и папка GAC будет затем видима как любая нормальная папка в проводнике.
  2. Открытый †œ % windir %\assembly\GAC_MSILâ€?.

  3. Обзор к Вашей папке DLL в глубокое для нахождения DLL.

  4. Скопируйте DLL где-нибудь на Вашем жестком диске и отошлите его оттуда в Вашем проекте

  5. Выполненный "regsvr32%windir %\Microsoft.NET\Framework \<. СЕТЕВОЙ каталог версии> \shfusion.dll", чтобы потворить регистрацию файла shfusion.dll и возвратить исходное отличное представление GAC.

149
ответ дан 24 November 2019 в 00:07
поделиться

Простым способом я нашел, должен открыть командную строку и просмотреть папку, которую Вы упоминаете, пока Вы не находите DLL, который Вы хотите - Вы можете затем пользователь команда копии для вывода его. Windows Explorer имеет "полезное" специальное представление этой папки.

13
ответ дан 24 November 2019 в 00:07
поделиться

Метод, описанный здесь, очень легок:

http://andreasglaser.net/post/2008/08/05/Extract-assembly-from-Global-Assembly-Cache - (GAC)-with-network-drive-mapping.aspx

Сводка от статьи:

  • Подключите Сетевой диск (Проводник-> Инструменты)
    • Отобразитесь на \servername\folder (\\YourServer\C$\Windows\Assembly)
  • Никакая потребность в совместном использовании, если Вы - Администратор
  • Обзор к диску и извлечению Ваш блок
107
ответ дан 24 November 2019 в 00:07
поделиться

Я думаю, что самый легкий путь состоит в том, чтобы сделать это через командную строку как упоминания David. Единственный прием - то, что .dll просто не расположен в C:\Windows\Assembly. Необходимо перейти к C:\Windows\Assembly\GAC\[ASSEMBLY_NAME]\[VERSION_NUMBER]_[PUBLIC KEY]. Можно затем сделать использование копии:

копия [ASSEMBLY_NAME] .dll c:\ (или безотносительно местоположения Вы хотите),

Надежда, которая помогает.

16
ответ дан 24 November 2019 в 00:07
поделиться

Да.

Добавьте ключ реестра DisableCacheViewer

Создайте новый dword ключ под HKLM\Software\Microsoft\Fusion\с именем DisableCacheViewer и установите it†™s [DWORD], оценивают 1.

Вернитесь к Windows Explorer к папке блока, и это будет нормальное представление файловой системы.

24
ответ дан 24 November 2019 в 00:07
поделиться

Это MSDN BLOG POST описывает три отдельных способа извлечения DLL из GAC. Полезное резюме методов до сих пор дано.

3
ответ дан 24 November 2019 в 00:07
поделиться

просто перейдите в C:\Windows найдите папку [assembly] щелкните правой кнопкой мыши и выберите добавить в архив

подождите немного

у вас есть архивный файл, содержащий все сборки в вашем GAC

2
ответ дан 24 November 2019 в 00:07
поделиться

Откройте командную строку и введите :

cd  c:\windows\assembly\GAC_MSIL 

xcopy . C:\GacDump /s /y

Это должно дать дамп всего GAC

Наслаждайтесь!

82
ответ дан 24 November 2019 в 00:07
поделиться

Еще одно направление - просто распакуйте MSI-файл и получите все полезности таким образом. Это спасет вас от возможной деинсталляции...

0
ответ дан 24 November 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: