我想更加熟悉.Net全局程序集缓存。网上各种消息来源说,可以在资源管理器中的C:\WINNT\Assembly
中找到它。但是,我的Windows XP计算机上的WINNT
下似乎没有C:
文件夹。我选中了“显示隐藏的文件和文件夹”,并选中了“隐藏 protected 操作系统文件”。
使用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
。在幕后,这实际上是一个 shell 扩展,隐藏了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的 shell 扩展,因此您要查看程序集所在磁盘上的实际位置。
有点偏离主题...
我总是以编程方式检测安装了.Net框架的版本的方式是查看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
...子文件夹指示已安装的版本。
关于.net - GAC的位置在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19980650/