我想更熟悉.Net Global Assembly Cache。各种来源在线说它可以在资源管理器中找到C:\ WINNT \ Assembly。但我似乎没有在我的Windows XP机器上的C:下有一个WINNT文件夹。我有"显示隐藏文件和文件夹"检查并"隐藏受保护的操作系统文件" UN-检查。
使用How to detect what .NET Framework versions and service packs are installed?中描述的方法,尤其是http://msdn.microsoft.com/en-us/kb/kbarticle.aspx?id=318785中描述的方法,我看到我安装了.Net 4.0。
我怎样才能可靠地找到它,为什么它会在任何地方,但它应该在哪里?
答案 0 :(得分:24)
作为免责声明,我首先要说您不应该直接编辑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实际位置的shell扩展,但为了您的目的,您可以打开资源管理器到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没有shell扩展,因此您正在查看程序集所在的磁盘上的实际位置。
有些偏离主题......
我总是以编程方式检测安装.Net框架版本的方式是查看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
...子文件夹表示已安装的版本。
答案 1 :(得分:1)
在windows xp中,它的c:\ windows \和它的一个隐藏文件夹,可以通过手动输入目录来找到它,就像你GAC所在的那样 (WINNT是.NT 4.0服务器或工作站,或Windows服务器2000,或Windows 2000)如果升级到Windows XP或Windows Server 2003 WINNT我相信只会在那种情况下保持完整,那就是你应该使用%windir%global系统变量
我在Windows 8.1 64位上,gac仍然在C:\ Windows \ assembly
但.net位于c:\ windows \ Microsoft.NET \是CLR和运行时
的位置奇怪的是上面的另一个答案,似乎我不同意c:\ windows \ assembly是“老gac”
这是我的dos结果
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 \ assembly是您机器的当前状态。但我不是专家,只是我看到的
答案 2 :(得分:1)
c:\ Windows \ Microsoft.NET \ Assembly
c:\ Windows \ Assembly