Есть пакет, с которым мне приходится иметь дело, который устанавливает сборки прямо в GAC (например, где-то глубоко в% windows%/assembly).
Как мне изгнать фактическую сборку (DLL) из GAC в обычную файловую систему?
Спасибо.
Есть пакет, с которым мне приходится иметь дело, который устанавливает сборки прямо в GAC (например, где-то глубоко в% windows%/assembly).
Как мне изгнать фактическую сборку (DLL) из GAC в обычную файловую систему?
Спасибо.
Я использовал совет эту статью, чтобы получить сборку из GAC.
Получить DLL из GAC
DLL один раз развертывается в GAC (обычно c:\windows\assembly) невозможно просмотреть или используется как обычный DLL файл. Oни не могут быть напрямую связаны с VS проект. Разработчики обычно поддерживают копия исходного файла DLL и обратитесь к нему в времени разработки (дизайна), которое использует сборка от GAC во время выполнения проекта.
Во время выполнения (время выполнения), если сборка будет подписана и автоматически развертывается в GAC поднимает сборку от ПКК вместо DLL, на которую ссылаются во время время разработки в VS. В случае, если разработчик удалил исходную DLL или не имеют его по какой-то причине, есть способ получить DLL файл от ПКК. Выполните следующие действия. для копирования DLL из GAC
Запустите regsvr32/u C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll
- shfusion.dll - DLL расширителя explorer, который дает отчетливый посмотрите в папку GAC. Дерегистрация этот файл удалит сборку просмотра кеша и папка GAC быть видимым как любая нормальная папка в проводнике.
Откройте "% windir%\assembly\GAC_MSIL".
Перейдите в папку DLL в глубину, чтобы найти свою DLL.
Скопируйте DLL где-нибудь на свой жесткий диск и отсылайте его оттуда в своем проект
Запустить "regsvr32% windir%\Microsoft.NET\Framework\<.NET каталог версий > \shfusion.dll" на перерегистрируйте файл shfusion.dll и восстановить оригинальное GAC.
Метод, описанный здесь, очень прост:
Резюме из статьи:
\\YourServer\C$\Windows\Assembly
)Откройте командную строку и введите:
cd c:\windows\assembly\GAC_MSIL
xcopy . C:\GacDump /s /y
Это должно дать дамп всего GAC
Наслаждайтесь!
Да.
Добавить ключ реестра DisableCacheViewer
Создайте новый ключ dword в HKLM\Software\Microsoft\Fusion\с именем DisableCacheViewer и установите его значение [DWORD] равным 1.
Вернитесь в проводник Windows в папку сборки, и это будет обычное представление файловой системы.
Я думаю, что самый простой способ - сделать это через командную строку, как упоминает Дэвид. Единственный трюк в том, что .dll не просто находится в C:\Windows\Assembly. Вы должны перейти к C:\Windows\Assembly\GAC\[ASSEMBLY_NAME]\[VERSION_NUMBER] _ [PUBLIC KEY]. Затем вы можете сделать копию, используя:
скопировать [ASSEMBLY_NAME].dll c:\(или любое другое местоположение)
Надеюсь, что это поможет.
Простой способ, который я нашел, - открыть командную строку и просмотреть указанную вами папку до тех пор, пока не найдете нужную DLL-версию. Затем вы можете выполнить команду копирования, чтобы получить ее. Проводник Windows имеет "полезный" специальный вид этой папки.
Я являюсь автором PowerShell GAC. С помощью PowerShell GAC вы можете извлекать сборки из GAC, не зависимо от внутренних компонентов GAC, таких как изменение структур папок.
Get-GacAssembly SomeCompany* | Get-GacAssemblyFile | Copy-Item -Dest C:\Temp\SomeCompany
Откройте RUN, затем введите %windir%\assembly\GAC_MSIL
, это откроет ваши DLL файлы в виде папок, затем вы сможете перейти к вашей папке с именами DLL и открыть ее, вы найдете свой DLL файл и скопируете его легко
В этом блоге в блоге MSDN описываются три отдельных способа извлечения DLL из GAC. Полезное резюме методов, которые до сих пор давались.
Вместо этого используйте браузер файлов "Total Commander".
Из Powershell script вы можете попробовать это. У меня была только одна версия сборки в GAC, так что это работало нормально.
cd "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\"
Get-ChildItem assemblypath -Recurse -Include *.dll | Copy-Item -Destination "c:\folder to copy to"
где путь сборки может использовать подстановочные знаки.
просто перейдите к C:\Windows найти папку [assembly] щелкните правой кнопкой мыши и выберите добавить в архив
подождите немного
vola у вас есть файл архива, содержащий все сборки в вашем GAC
Думаю, что я понял способ заглянуть в GAC без изменения реестра или с помощью командной строки, powershell или любых других программ:
Создайте новый ярлык (в любом месте). Затем измените ярлык, чтобы иметь цель:
%windir%\assembly\GAC_MSIL\System
Открытие этого ярлыка приведет вас к папке System внутри GAC (которую каждый должен иметь) и имеет прекрасный побочный эффект, позволяя вам переключиться на более высокий каталог, а затем перейти в любую другую нужную папку (и посмотреть файлы DLL, и т.д.)
Я тестировал это на Windows 7 и на сервере Windows 2012.
Примечание. Это не позволит вам использовать эту цель при создании ярлыка, но вы можете отредактировать ее.
Наслаждайтесь!
Еще одно направление - просто распакуйте файл MSI и получите полезные свойства. Экономит вас от возможной деинсталляции.,.
Копирование из командной строки не требуется. Я ввел имя DLL из окна "Поиск в окне". Я выбрал больше результатов. Тот, что был в GAC, был возвращен в окне поиска. Я щелкнул правой кнопкой мыши по нему и сказал, что открытое местоположение файла. Он открывается в обычном Проводнике Windows. Я скопировал файл. Я закрыл окно. Готово.