有没有办法使用 PowerShell 查看 GAC 的内容?
6 回答
如文档中所述:
从 .NET Framework 4 开始,全局程序集缓存的默认位置是 %windir%\Microsoft.NET\assembly。在早期版本的 .NET Framework 中,默认位置是 %windir%\assembly。
您可能希望在适当的子目录中搜索,甚至在它们两者中搜索。
列出 GAC 中的条目;
gacutil -l
在 powershell 中,您可以解析上面的文本输出。我不知道检查 GAC 的托管接口。
我有同样的问题。这个问题在 .Net 4.0 中变得更加突出,并且没有可用于查看内容的 Windows Explorer shell 插件。GacUtil 可以工作,但不够灵活,需要大量安装。PowerShell Community Extensions 选项的功能受到限制,并且包含我不需要的许多其他 CmdLet。因此,我编写了自己的 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*"}