Answers:
我使用了本文的建议,以从GAC获得一个程序集。
从GAC中获取DLL
一旦在GAC中部署了DLL(通常位于c:\ windows \ assembly),就无法将其视为常规DLL文件或将其用作常规DLL文件。不能从VS项目中直接引用它们。开发人员通常会保留原始DLL文件的副本,并在开发(设计)时在项目中引用它,该文件在项目运行时使用GAC的程序集。
在执行过程中(运行时),如果发现该程序集已在GAC中签名并部署,则CLR会自动从GAC中拾取该程序集,而不是在VS中的设计时从中提取DLL。如果开发人员已删除原始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的原始视图。
shfusion.dll
似乎不支持通过选项时DllInstall()
调用的入口点。省略该选项可以成功重新注册组件。regsvr32
/i
这里描述的方法非常简单:
文章摘要:
\\YourServer\C$\Windows\Assembly
)打开命令提示符并键入:
cd c:\windows\assembly\GAC_MSIL
xcopy . C:\GacDump /s /y
这应该使整个GAC都转储
请享用!
是。
添加DisableCacheViewer注册表项
在名称为DisableCacheViewer的HKLM \ Software \ Microsoft \ Fusion \下创建一个新的dword密钥,并将其[DWORD]值设置为1。
返回Windows资源管理器并转到Assembly文件夹,它将是普通文件系统视图。
我发现的简单方法是打开命令提示符并浏览您提到的文件夹,直到找到所需的DLL-然后可以使用copy命令将其取出。Windows资源管理器对此文件夹具有“有用的”特殊视图。
打开RUN然后键入%windir%\assembly\GAC_MSIL
,这将在文件夹视图中打开您的dll,然后您可以导航到名为dll的文件夹并打开它,您将找到dll文件并轻松复制
我是PowerShell GAC的作者。使用PowerShell GAC,您可以从GAC提取程序集,而无需依赖于GAC内部结构,例如更改文件夹结构。
Get-GacAssembly SomeCompany* | Get-GacAssemblyFile | Copy-Item -Dest C:\Temp\SomeCompany