【发布时间】:2010-11-19 02:15:52
【问题描述】:
只是为外行寻找 GAC 的简短概述,而不是链接。
【问题讨论】:
只是为外行寻找 GAC 的简短概述,而不是链接。
【问题讨论】:
是的,所以基本上它是一种保持 DLL 全局可访问而不必担心冲突的方法。不再有 DLL 地狱。每个架构和版本都有自己的生存空间。
它也有自己的方式在资源管理器中浏览它,所以如果你去
C:\Windows\程序集
在 Windows 资源管理器中,它列出了所有 DLL。
但如果你启动cmd,你会看到它的真正结构:
在这里您可以看到 System.Data 的 2.0.0.0__b77a5c561934e089 版本。
一个 DLL 由 5 个部分标识:
虽然前三个一般都是大的。
【讨论】:
让我们分解一下:
因此 GAC 必须是存储代码库的地方,以便机器上运行的所有应用程序都可以访问它们。
【讨论】:
每台电脑都有共同点 安装语言运行时有一个 机器范围的代码缓存称为 全局程序集缓存。全球 程序集缓存存储程序集 特别指定为共享 通过几个应用程序 电脑。
您应该通过以下方式共享程序集 将它们安装到全球 仅在需要时才缓存程序集。 作为一般准则,保持组装 依赖私有,并定位 应用程序中的程序集 目录,除非共享程序集 是明确要求的。此外, 没有必要安装 组装成全局组装 缓存以使 COM 可以访问它们 互操作或非托管代码。
MSDN 包含的内容可能会让您大吃一惊……您通常可以像阅读文章一样阅读它。顶部最直接和最重要的部分,更深层次的复杂细节。它肯定比我能解释得更好。
请注意,Visual Studio 会在 References 窗口的 .NET 选项卡中显示 GAC 中的所有 DLL。 (右键单击解决方案资源管理器中的项目并选择添加引用。)这应该会给您一个更具体的想法。
【讨论】:
集中式 DLL 库。
【讨论】:
全局程序集缓存 (GAC) 是 Windows 目录中的一个文件夹,用于存储专门指定由系统上执行的所有应用程序共享的 .NET 程序集。通过在全局程序集缓存 (GAC) 中注册程序集,可以在机器上的多个应用程序之间共享程序集。 GAC 是机器范围内由 .NET Framework 维护的程序集的本地缓存。
【讨论】:
Exe 应用程序,首先,从当前目录引用到子目录。 然后,系统目录。 VS6.0系统目录为..windows/system32。 .NET系统目录如下GAC路径。
GAC 路径
1) C:\Windows\Assembly(适用于 .NET 2.0 ~ 3.5)
2) C:\Windows\Microsoft.NET\assembly(适用于 .NET 4.0)
如何将程序集安装到 GAC 中(以管理员身份)
1) 拖放
2) 在 Visual Studio 命令提示符下使用 GacUtil.exe
gacutil -i [Path][Assembly Name].dll
如何从 GAC 卸载程序集(以管理员身份)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh
【讨论】:
就物理文件以及它们的接口和位置信息而言,这就像 COM 注册表做得正确。在 COM 中,文件无处不在,具有集中的元数据。 GAC 集中管理大爆炸。
【讨论】:
GAC(全局程序集缓存)是所有共享的 .NET 程序集所在的位置。
【讨论】: