答案 0 :(得分:5)
如果你想枚举GAC中的内容(例如编写系统管理工具),你最好的选择是使用fusion.dll,尽管这需要你的一些互操作代码。
答案 1 :(得分:1)
是不是总是%windir%\assembly
?
编辑:
c:\Windows>dir \windows\assembly
Volume in drive C has no label.
Volume Serial Number is C8BC-2EBD
Directory of c:\windows\assembly
08/14/2009 03:06 AM <DIR> GAC
07/28/2009 03:07 AM <DIR> GAC_32
09/08/2009 10:57 PM <DIR> GAC_MSIL
08/15/2009 07:35 PM <DIR> NativeImages_v2.0.50727_32
09/08/2009 10:57 PM <DIR> temp
09/08/2009 09:47 PM <DIR> tmp
0 File(s) 0 bytes
6 Dir(s) 4,560,822,272 bytes free
答案 2 :(得分:1)
位于%windir%\ Assembly文件夹中。
Dan尽管得到了代码示例的答案。
答案 3 :(得分:1)
有充分的理由可以像文件夹一样手动访问GAC。当然,人们应该意识到操纵那里的风险。但是,我会说,只读访问是相当不错的。
除了提到的%windir%\ assembly之外,Nir Sofer可能已经为您完成了这项工作。他写了GACView。
嘿,它甚至还有一个功能可以在Explorer中禁用特殊视图:在Explorer中选择/禁用Assembly Viewer。然后该文件夹将显示为普通文件夹。虽然这在Windows XP上运行良好,但它不适用于Windows 7 64 Bit,因为它将其设置在32位版本的注册表中。 要在Windows 7 64位上禁用程序集查看器,请启动Regedit(64位),转到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion
并添加一个名为DisableCacheViewer的新DWORD值为1.
要独立于目录(可能更改),您可以通过Fusion Registry Key枚举程序集:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\GACChangeNotification\Default
我想这就是GACView内部工作的方式。但它仍然不会枚举%windir%\ Microsoft.NET \ assembly中的.NET 4程序集。
支持.NET 4的工具是GACBrowser,但它显示的信息较少。
答案 4 :(得分:0)
让运行时管理它的程序集并相信它们会在那里。如果你需要安装一些东西使用gacutil。如果你需要卸载一些东西使用gacutil。如果需要访问程序集,请在项目中添加对它的引用。如果您需要在其他人的机器上与GAC进行交互,请执行@Dan所说的并使用MSI和朋友。
否则请勿触及GAC