Есть ли способ использовать PowerShell для просмотра содержимого GAC?
Другой вариант заключается в том, что Расширения сообщества PowerShell устанавливает поставщика GAC, поэтому вы можете сделать это:
dir gac:
Если вы используете PowerShell V2, не забудьте взять бета-версию 1.2.
Для просмотра записей в GAC;
gacutil -l
В powershell вы можете анализировать вывод текста выше. Я не знаю управляемого интерфейса для проверки GAC.
Как указано в документах :
Начиная с .NET Framework 4, местоположением по умолчанию для глобального кэша сборок является% windir% \ Microsoft.NET \ assembly. В более ранних версиях .NET Framework расположение по умолчанию:% windir% \ assembly.
Вы можете искать в соответствующем поддиректории или даже в обоих из них.
У меня был тот же вопрос. Вопрос стал более заметным с .Net 4.0, и там не было плагина Windows Explorer, доступного для просмотра содержимого. GacUtil работает, но недостаточно гибок и требует много времени для установки. Параметр PowerShell Community Extensions ограничен по своей функциональности и содержит множество других CmdLets, которые мне не нужны. Поэтому я написал свой собственный модуль PowerShell для просмотра и изменения GAC. Его можно найти на http://powershellgac.codeplex.com
Этот проект перемещен на GitHub. Теперь вы можете найти его на:
https://github.com/LTruijens/powershell-gac
Его также можно найти в галерее PowerShell:
https://www.powershellgallery.com/packages/Gac/1.0.1
# Show the assemblies in the GAC, including the file version Get-GacAssembly SomeCompany* | Format-Table -View FileVersion
Вы можете сделать это просто из командной строки:
cd C:\Windows\assembly dir
GAC имеет особую структуру каталогов, и вы не должны перемещать или удалять там что-либо с помощью командной строки - лучше использовать Windows Explorer (GUI) или gacutil (Cli)
Если вы хотите найти конкретную сборку в GAC.
Также обратите внимание, что поскольку MS изменила структуру GAC, вы можете использовать опцию -Recurse из корня для поиска во всем GAC.
CD C:\Windows\assembly ls -Recurse | ?{$_.Name -like "*log4net*"}