.net - GAC 的位置在哪里?

标签 .net .net-4.0 gac

我想更加熟悉 .Net 全局程序集缓存。网上的各种消息来源说它可以在 C:\WINNT\Assembly 中的 Explorer 中找到。 .但我似乎没有 WINNT文件夹下 C:在我的 Windows XP 机器上。我已选中“显示隐藏的文件和文件夹”并选中“隐藏 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默认情况下。在幕后,这实际上是一个隐藏 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 ...子文件夹表示已安装的版本。

关于.net - GAC 的位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19980650/

相关文章:

c# - 如果 MSDN 中没有记录,如何确定某个方法可以抛出哪些异常?

c# - 读取大 TXT 文件,内存不足异常

C# 编译器看到的是 Fluent 语法还是查询表达式?

wix - 如何强制从 GAC 卸载程序集?

c# - 使共享库可用于多个应用程序的最佳方法是什么?

c# - 使用 ComboBox 将 DataGridView 绑定(bind)到 DataTable 不起作用

c# - dotnet restore fail "Unable to resolve ' PCLLibrary' for '.NETCoreApp,Version=v1.0'。”

wcf - 部署到 IIS : Login failed for user 'IIS APPPOOL\DefaultAppPool' 时出现异常

.net - 找不到System.Net.Http.Formatting dll

c# - 如何从自定义授权策略向客户端发送有意义的错误