提取 GAC 程序集






4.45/5 (13投票s)
从 GAC 提取 .NET 程序集
引言
今天我将编写一个简单但有用的实用程序,它可以用来从全局程序集缓存 (GAC) 中提取 .NET 程序集。
背景
几天前,我正在使用 SharePoint 对象模型,我发现我需要提取一些安装在我的机器的 GAC 中的程序集。而且没有现成的工具来完成这项任务。这就是为什么我想编写一个并将其发布在这里,以便下次对我以及其他开发人员来说,执行此操作会更容易。
使用代码
我想大多数读者都知道 GAC 的结构。但在这里我再次简要地解释一下。安装后,.NET 程序集保留在 $(windir)\assembly\GAC 目录中,该目录可以在 Windows 目录中找到(这是通常的情况)。并且在这个目录中,一个程序集存储在一个名称类似于该程序集的目录中。在这个目录中,还有一个名为 XXXXX__YYYYY 的目录,在该目录下方存储了实际的程序集。这里 XXXXX 是程序集的版本号,YYYYY 是公钥令牌。你知道 .NET 通过其优雅的并行执行消除了“DLLHELL
”。因此,另一个具有相同名称但不同版本的程序集可以存储在 GAC 中,而不会产生歧义。
好吧,在代码中,我只是以编程方式探索 $(windir)\assembly\ 目录。你无法使用 Windows 资源管理器探索此目录。查看此目录的实际内容唯一的方法是使用命令 shell。
这里没什么好说的了。代码非常简单。它只是探索该目录,并提供一些功能来从/向全局程序集缓存提取/安装一个或多个程序集。
结论
希望你喜欢这个!