我想更加熟悉.Net全局程序集缓存。各种在线资源都说可以在资源管理器的C:\WINNT\Assembly
中找到它。但是,我的Windows XP计算机上WINNT
下似乎没有C:
文件夹。我已选中“显示隐藏的文件和文件夹”,并且未选中“隐藏受保护的操作系统文件”。
使用How do I detect what .NET Framework versions and service packs are installed?中描述的方法,尤其是http://msdn.microsoft.com/en-us/kb/kbarticle.aspx?id=318785中描述的方法,我发现已安装.Net 4.0。
我如何可靠地找到它,为什么它会在应该存在的地方之外的任何地方?
作为免责声明,我首先要说您永远不要直接编辑GAC的内容。
进入信息...
您的问题中有两种不同的GAC,即2.0 GAC和4.0 GAC。在谈论这些时,他们不是在指.NET框架的版本,而是所使用的CLR的版本。碰巧的是,在2.0中,CLR为2,在4.0中,CLR为4。作为参考,.Net 3.5的CLR保持为2,因此.net 2.0和.net 3.5的GAC一样。
但是它在哪里?
2.0 GAC在资源管理器中位于%WINDIR%\Assembly
。对于大多数较新的Windows操作系统,默认情况下%WINDIR%
为C:\Windows
。在后台,这实际上是一个外壳扩展,隐藏了GAC的实际位置,但是出于您的目的,您将浏览器打开到C:\Windows\Assembly
以查看2.0 GAC的内容。 Shell扩展还增加了将程序集拖放到C:\Windows\Assembly
以便将它们添加到GAC的好处(必须在Win7及更高版本中禁用UAC。)
4.0 GAC位于C:\Windows\Microsoft.NET\assembly
。您会在该文件夹下找到各种类型的程序集,这些程序集分为其32位,64位或MSIL子目录。没有CLR4的gac的外壳扩展,因此您正在查看程序集所在磁盘的实际位置。
有点偏离主题...
我总是以编程方式检测安装了.Net框架的版本的方式是查看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
...子文件夹指示已安装的版本。
在Windows XP中,它的c:\ windows \及其一个隐藏的文件夹,可以通过在GAC所在的位置手动键入目录来找到它(WINNT是.NT 4.0服务器或工作站,或Windows Server 2000或Windows 2000),如果升级到Windows XP或Windows Server 2003 WINNT,我相信只有在那种情况下才能保持完整,这就是应该使用%windir%global系统变量
Im在Windows 8.1 64位上,并且gac仍在C:\ Windows \ assembly中
但是.net在c:\ windows \ Microsoft.NET \中,是CLR和运行时所在的位置
奇怪的是,我似乎不同意c:\ windows \ assembly是“旧gac”]
这是我的剂量结果
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\WINDOWS\system32>cd..
C:\Windows>cd assembly
C:\Windows\assembly>dir
Volume in drive C is OS
Volume Serial Number is DE26-14AA
Directory of C:\Windows\assembly
11/01/2013 01:15 PM <DIR> GAC
11/14/2013 01:10 PM <DIR> GAC_32
11/14/2013 01:10 PM <DIR> GAC_64
11/14/2013 01:27 PM <DIR> GAC_MSIL
11/13/2013 05:36 PM <DIR> NativeImages_v2.0.50727_32
11/10/2013 03:22 AM <DIR> NativeImages_v2.0.50727_64
11/14/2013 01:33 PM <DIR> NativeImages_v4.0.30319_32
11/13/2013 05:36 PM <DIR> NativeImages_v4.0.30319_64
11/14/2013 01:33 PM <DIR> temp
11/14/2013 01:32 PM <DIR> tmp
0 File(s) 0 bytes
10 Dir(s) 27,701,415,936 bytes free
C:\Windows\assembly>
c:\ windows \ microsoft.net \ assembly我不认为这是您的Active GAC,我认为这是Visual Studio在为特定版本x64或32等进行编译时查找的位置,其他c:\ windows \组装是计算机的当前状态。但我不是专家,只是我所看到的