.NET中的GAC是什么?
只是寻找一个外行的简短的GAC概述,而不是一个链接。
对,基本上这是一种保持全局访问DLL而不用担心冲突的方法。 没有更多的DLL地狱。 每个架构和版本都有自己的生活场所。
它也有自己的方式来浏览它在资源pipe理器,所以如果你去
C:\ WINDOWS \总成
在Windows资源pipe理器中,它列出了所有的DLL。
但是如果你启动了cmd
,你可以看到它是如何构build的:
C:\ Users \ tritter> cd C:\ Windows \ assembly C:\ WINDOWS \组装>目录 C:\ Windows \程序集目录 07/20/2009 02:18 PM <DIR> GAC 06/17/2009 04:22 PM <DIR> GAC_32 06/17/2009 04:22 PM <DIR> GAC_64 06/17/2009 04:22 PM <DIR> GAC_MSIL ...略... 0文件0字节 9个Dir(s)90,538,311,680字节免费 C:\ Windows \ assembly> cd GAC_64 C:\ WINDOWS \assembly\ GAC_64>目录 C:\ Windows \ assembly \ GAC_64目录 06/17/2009 04:22 PM <DIR>。 06/17/2009 04:22 PM <DIR> 01/19/2008 09:54 AM <DIR> blbproxy ...略... 01/19/2008 09:54 AM <DIR> srmlib 01/19/2008 06:11 AM <DIR> System.Data 01/19/2008 06:11 AM <DIR> System.Data.OracleClient ...略... 0文件0字节 34 Dir(s)90,538,311,680字节免费 C:\ Windows \ assembly \ GAC_64> cd System.Data C:\ WINDOWS \assembly\ GAC_64 \ System.Data>目录 C:\ Windows \ assembly \ GAC_64 \ System.Data目录 01/19/2008 06:11 AM <DIR>。 01/19/2008 06:11 AM <DIR> 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0文件0字节 3个Dir(s)90,538,311,680字节免费 C:\ Windows \ assembly \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C:\ WINDOWS \assembly\ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>目录 目录C:\ Windows \程序集\ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 04/11/2009 12:20 PM <DIR> 04/11/2009 12:20 PM <DIR> 04/11/2009 12:12 PM 3,008,512 System.Data.dll 1个文件3,008,512字节 2个Dir(s)90,538,311,680字节免费 C:\ WINDOWS \assembly\ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
在这里你可以看到System.Data的版本2.0.0.0__b77a5c561934e089。
一个DLL由5个部分标识:
- 名称
- 版
- build筑
- 文化
- 公钥
虽然前三个一般是大的。
GAC =全局程序集caching
让我们来分解一下:
- 全局 – 适用于整个机器
- 程序集 – .NET调用其代码库(DLL)
- caching – 用于存储更快/常见访问的地方
所以GAC必须是一个存储代码库的地方,这样它们才能被机器上运行的所有应用程序访问。
全局程序集caching
安装公共语言运行库的每台计算机都有一个称为全局程序集caching的机器范围代码caching。 全局程序集caching存储专门指定由计算机上的多个应用程序共享的程序集。
只有在需要时才能将程序集安装到全局程序集caching中来共享程序集。 作为一般的指导方针,保持程序集依赖关系是私有的,并在程序目录中find程序集,除非明确要求共享程序集。 另外,不需要将程序集安装到全局程序集caching中,以使其可以访问COM互操作代码或非托pipe代码。
MSDN包含的东西可能会让你大吃一惊……你通常可以像阅读文章一样阅读它。 顶部的直截了当,最重要的部分,复杂的细节更深入。 这当然比我能解释得更好。
请注意,Visual Studio将在“ 参考”窗口的“.NET”选项卡中显示GAC中的所有DLL。 (右键单击解决scheme资源pipe理器中的项目,然后select添加引用。)这应该给你一个更切合实际的想法。
集中的DLL库。
这就像COMregistry完成正确,关于物理文件,以及他们的接口和位置信息。 在COM中,文件无处不在,具有集中的元数据。 GAC集中了一声枪响。
GAC(全局程序集caching)是所有共享.NET程序集驻留的地方。
全局程序集caching(GAC)是Windows目录中的一个文件夹,用于存储.NET程序集,这些程序集专门指定为由系统上执行的所有应用程序共享。 通过在全局程序集caching(GAC)中注册程序集,可以在机器上的多个应用程序之间共享程序集。 GAC是一个由.NET框架维护的程序集的本地caching。
首先,Exe Application从当前目录引用一个子目录。 然后,系统目录。 VS6.0的系统目录是..windows / system32。 .NET系统目录就像下面的GACpath一样。
-
GACpath
1)C:\ Windows \ Assembly(用于.NET 2.0〜3.5)
2)C:\ WINDOWS \ Micorosoft.NET \程序集(用于.NET 4.0)
-
如何将程序集安装到GAC(以pipe理员身份)
1)拖放
2)与Visual Studio命令提示符一起使用GacUtil.exe
gacutil -i [Path][Assembly Name].dll
- 注意:要将程序集安装到GAC中,程序集必须是强命名的。 否则,你会得到这样的错误:无法将程序集添加到caching中:尝试安装没有强名称的程序集。
-
如何从GAC中卸载程序集(以pipe理员身份)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh
- 注意:没有扩展名,.dll。 版本和PublickeyToken可以省略,并在GAC程序集中检查。