.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个部分标识:

  1. 名称
  2. build筑
  3. 文化
  4. 公钥

虽然前三个一般是大的。

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一样。

  1. GACpath

    1)C:\ Windows \ Assembly(用于.NET 2.0〜3.5)

    2)C:\ WINDOWS \ Micorosoft.NET \程序集(用于.NET 4.0)

  2. 如何将程序集安装到GAC(以pipe理员身份)

    1)拖放

    2)与Visual Studio命令提示符一起使用GacUtil.exe

      gacutil -i [Path][Assembly Name].dll 
    • 注意:要将程序集安装到GAC中,程序集必须是强命名的。 否则,你会得到这样的错误:无法将程序集添加到caching中:尝试安装没有强名称的程序集。
  3. 如何从GAC中卸载程序集(以pipe理员身份)

      gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh 
    • 注意:没有扩展名,.dll。 版本和PublickeyToken可以省略,并在GAC程序集中检查。