当前位置:  开发笔记 > 开发工具 > 正文

如何从GAC中提取程序集?

如何解决《如何从GAC中提取程序集?》经验,为你挑选了7个好方法。

我必须处理一个包,它将程序集直接安装到GAC中(例如,在%windows%/ assembly中的某个地方).

如何将实际程序集(DLL)从GAC驱动到普通文件系统?

谢谢.



1> Andrew Hare..:

我使用本文中的建议从GAC获取程序集.

从GAC中获取DLL

一旦部署在GAC(通常位于c:\ windows\assembly)中的DLL就无法查看或用作普通的DLL文件.它们不能直接从VS项目中引用.开发人员通常会保留原始DLL文件的副本,并在开发(设计)时在项目中引用它,该文件在项目运行期间使用GAC中的程序集.

在执行(运行时)期间,如果发现程序集在GAC中被签名和部署,则CLR会自动从GAC中获取程序集,而不是在VS中设计时引用的DLL.如果开发人员删除了原始DLL或由于某种原因没有它,有一种方法可以从GAC获取DLL文件.按照以下步骤从GAC复制DLL

    运行regsvr32/u C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll

    shfusion.dll是一个资源管理器扩展DLL,它为GAC文件夹提供了独特的外观.取消注册此文件将删除程序集缓存查看器,然后GAC文件夹将显示为资源管理器中的任何普通文件夹.

    打开"%windir%\ assembly\GAC_MSIL".

    浏览到你的DLL文件夹深入找到你的DLL.

    将DLL复制到硬盘上的某个位置,并从项目中的那里引用它

    运行"regsvr32%windir%\ Microsoft.NET\Framework\<.NET版目录>\shfusion.dll"以重新注册shfusion.dll文件并重新获得GAC的原始独特视图.


这有效,但有点复杂.如果您不害怕命令提示符,您只需cd进入必要的目录并以这种方式复制DLL.
您可以跳过步骤1和2,直接转到%windir%\ assembly\GAC_MSIL并从那里进行浏览.
@ChristianFredh请注意:对我来说,这只能直接从"运行"对话框中完成.
@Andrew,看起来`shfusion.dll`不支持`regsvr32`在传递`/ i`选项时调用的`DllInstall()`入口点.省略该选项可以成功重新注册组件.
只需安装TotalCommander,启用该选项即可查看所有隐藏文件,您可以获取所需的每个程序集

2> Sadjad..:

这里描述的方法非常简单:

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)

如果您是管理员,则无需共享

浏览到驱动器并解压缩组件



3> 小智..:

打开命令提示符并键入:

cd  c:\windows\assembly\GAC_MSIL 

xcopy . C:\GacDump /s /y

这应该是整个GAC的转储

请享用!


Deepak的答案更清晰,并使用适当的标志xcopy.

4> mccrager..:

是.

添加DisableCacheViewer注册表项

在HKLM\Software\Microsoft\Fusion \下创建一个名为DisableCacheViewer的新dword键,并将其[DWORD]值设置为1.

返回Windows资源管理器到程序集文件夹,它将是普通的文件系统视图.


被低估的答案。谢谢!

5> AdamB..:

我认为最简单的方法是通过像David提到的命令行来完成它.唯一的技巧是.dll不仅仅位于C:\ Windows\Assembly.您必须导航到C:\ Windows\Assembly\GAC\[ASSEMBLY_NAME]\[VERSION_NUMBER] _ [PUBLIC KEY].然后,您可以使用以下方法复制:

复制[ASSEMBLY_NAME] .dll c:\(或您想要的任何位置)

希望有所帮助.



6> David M..:

我找到的简单方法是打开命令提示符并浏览您提到的文件夹,直到找到所需的DLL - 然后您可以使用copy命令将其删除.Windows资源管理器具有此文件夹的"有用"特殊视图.



7> 小智..:

打开RUN然后键入%windir%\assembly\GAC_MSIL,这将在文件夹视图中打开您的dll然后您可以导航到您的DLL命名文件夹并打开它,您将找到您的DLL文件并轻松复制它

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有