我的GAC在哪里?

时间:2013-11-14 14:45:31

标签: .net .net-4.0 gac

我想更熟悉.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。

我怎样才能可靠地找到它,为什么它会在任何地方,但它应该在哪里?

3 个答案:

答案 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