只是寻找一个简短的概述 GAC 为一个门外汉,而不是一个链接请。
< a href = “ http://msdn.microsoft.com/en-us/library/yf1d93sz.aspx”rel = “ noReferrer”> < strong > Global Assembly Cache
< p > 每台电脑在哪里共用 语言运行库安装了一个 机器范围的代码缓存,称为 全局程序集缓存 程序集缓存存储程序集 特别指定为共享 的申请 计算机 你应该通过以下方式共享程序集 安装到全球 只有在需要时才使用程序集缓存。 作为总的指导方针,保持装配 私有的依赖关系,并定位 应用程序中的程序集 除非共享一个程序集 是明确要求的。此外, 不需要安装 程序集转换为全局程序集 缓存,使他们可以访问 COM 互操作或非托管代码
MSDN 包含的内容可能会让你感到惊讶... ... 你通常可以像阅读文章一样阅读它。最上面最直接最重要的部分,更深层的错综复杂的细节。这比我能解释得更清楚。
注意,VisualStudio 将 GAC 中的所有 DLL 显示在。参考文献窗口的 NET 选项卡。(右键单击解决方案资源管理器中的项目,并选择“添加引用”。)这应该能给你一个更切实的想法。
对,所以基本上它是一种保持 DLL 全局可访问而不用担心冲突的方法。再也没有 DLL 地狱了。每个架构和版本都有自己的居住地。
在资源管理器中,它也有自己的浏览方式
C: Windows 程序集
在文件资源管理器中列出了所有的 dll。
但是如果你启动 cmd,你可以看到它的结构:
cmd
C:\Users\tritter>cd C:\Windows\assembly C:\Windows\assembly>dir Directory of C:\Windows\assembly 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 ...snip... 0 File(s) 0 bytes 9 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly>cd GAC_64 C:\Windows\assembly\GAC_64>dir Directory of 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 ...snip... 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 ...snip... 0 File(s) 0 bytes 34 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly\GAC_64>cd System.Data C:\Windows\assembly\GAC_64\System.Data>dir Directory of 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 File(s) 0 bytes 3 Dir(s) 90,538,311,680 bytes free 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>dir Directory of C:\Windows\assembly\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 File(s) 3,008,512 bytes 2 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089>
这里您可以看到 System.Data 的版本2.0.0.0 _ _ b77a5c561934e089。
DLL 由5部分组成:
虽然前三个通常都是大的。
集中式 DLL 库。
我们来分析一下:
因此,GAC 必须是存储代码库的地方,以便机器上运行的所有应用程序都可以访问这些代码库。
就物理文件以及它们的接口和位置信息而言,它就像 COM 注册表一样做得很好。在 COM 中,文件无处不在,有着集中的元数据。GAC 集中了爆炸射击。
GAC (全局程序集缓存)是所有共享.NET 程序集所在的位置。
全局程序集缓存(GAC)是 Windows 目录中的一个文件夹,用于存储。NET 程序集,这些程序集专门指定由系统上执行的所有应用程序共享。通过在全局程序集缓存(GAC)中注册程序集,可以在计算机上的多个应用程序之间共享程序集。GAC 是由。NET 架构。
1) C: Windows 汇编(适用于.NET 2.0 ~ 3.5)
2) C: Windows Microsoft.NET 程序集(用于.NET 4.0)
1)拖放
2)在 Visual Studio 命令提示符下使用 GacUtil.exe
gacutil -i [Path][Assembly Name].dll
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh