.net NET中的GAC是什么?
只是想为外行简单介绍一下GAC,请不要链接。 每台计算机都有相同的功能 安装的语言运行库具有 称为 全局程序集缓存。全球 程序集缓存存储程序集 专门指定共享的 通过在 电脑 您应该通过共享程序集 将它们安装到全球网络中 仅当需要时才进行程序集缓存。 作为一般指导原则,保持装配 依赖项私有,并定位 应用程序中的程序集 目录,除非共享程序集 是明确要求的。此外 不需要安装 将程序集导入全局程序集 缓存以使COM能够访问它们 互操作或非托管代码 MSDN包含的内容可能会让您感到惊讶。。。你通常可以把它当作一篇文章来读。最直接和最重要的部分在顶部,复杂的细节在更深层次。这当然比我能解释得更好.net NET中的GAC是什么?,.net,gac,.net,Gac,只是想为外行简单介绍一下GAC,请不要链接。 每台计算机都有相同的功能 安装的语言运行库具有 称为 全局程序集缓存。全球 程序集缓存存储程序集 专门指定共享的 通过在 电脑 您应该通过共享程序集 将它们安装到全球网络中 仅当需要时才进行程序集缓存。 作为一般指导原则,保持装配 依赖项私有,并定位 应用程序中的程序集 目录,除非共享程序集 是明确要求的。此外 不需要安装 将程序集导入全局程序集 缓存以使COM能够访问它们 互操作或非托管代码 MSDN包含的内容可能会让您感到惊讶。。。你通常可以把它
请注意,VisualStudio在“引用”窗口的.NET选项卡中显示GAC中的所有DLL。(右键单击解决方案资源管理器中的项目,然后选择“添加引用”。)这将为您提供一个更直观的想法。没错,因此基本上这是一种让DLL可以全局访问而不必担心冲突的方法。再也没有地狱了。每种架构和版本都有自己的居住地 它也有自己的方式在浏览器中浏览它,所以如果你去 C:\Windows\assembly 在windows资源管理器中,它列出了所有DLL 但如果启动
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>
C:\Users\tritter>cd C:\Windows\assembly
C:\Windows\assembly>dir
C:\Windows\assembly目录
07/20/2009 02:18下午广汽
06/17/2009 04:22下午GAC_32
06/17/2009 04:22下午GAC_64
2009年6月17日04:22
剪
0个文件0个字节
9 Dir(s)90538311680可用字节
C:\Windows\assembly>cd GAC\U 64
C:\Windows\assembly\GAC\U 64>目录
C:\Windows\assembly\GAC\U 64的目录
2009年6月17日下午4:22。
2009年6月17日下午4:22。。
01/19/2008 09:54上午blbproxy
剪
01/19/2008 09:54上午srmlib
01/19/2008 06:11上午系统数据
01/19/2008 06:11 AM System.Data.OracleClient
剪
0个文件0个字节
34 Dir(s)90538311680可用字节
C:\Windows\assembly\GAC_64>cd系统。数据
C:\Windows\assembly\GAC\U 64\System.Data>dir
C:\Windows\assembly\GAC\U 64\System.Data目录
01/19/2008 06:11上午。
01/19/2008 06:11上午。。
2009年11月4日下午12:20 2.0.0.0_uuB77A5C561934E089
0个文件0个字节
3目录(s)90538311680可用字节
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\assembly\GAC_64\System.Data\2.0.0__b77a5c561934e089的目录
2009年11月4日下午12:20。
2009年11月4日下午12:20。。
04/11/2009 12:12 PM 3008512 System.Data.dll
1个文件3008512字节
2个Dir(s)90538311680可用字节
C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089>
在这里可以看到System.Data的版本2.0.0.0__b77a5c561934e089
DLL由5个部分标识:
虽然前3个通常是大的。集中式DLL库。GAC=全局程序集缓存 让我们把它分解一下:
- 全局-适用于整个机器
- 汇编-.NET称之为其代码库(DLL)的内容
- 缓存-一个存储物品的地方,以便更快/更普通地访问
因此,GAC必须是存储代码库的地方,以便计算机上运行的所有应用程序都可以访问这些代码库。就物理文件及其接口和位置信息而言,这就像COM注册表做得很好一样。在COM中,文件无处不在,元数据集中。GAC将爆炸事件集中起来。GAC(全局程序集缓存)是所有共享.NET程序集所在的位置。全局程序集缓存(GAC)是Windows目录中的一个文件夹,用于存储指定由系统上执行的所有应用程序共享的.NET程序集。通过在全局程序集缓存(GAC)中注册程序集,可以在计算机上的多个应用程序之间共享程序集。GAC是由.NET Framework维护的程序集的机器范围的本地缓存 Exe应用程序,首先是从当前目录到子目录的引用。 然后是系统目录。 VS6.0系统目录为..windows/system32。 .NET系统目录类似于下面的GAC路径
gacutil -i [Path][Assembly Name].dll
- 注意:要将程序集安装到GAC中,该程序集必须具有强名称。 否则会出现如下错误:将程序集添加到缓存失败: 尝试安装没有强名称的程序集
- 注意:没有扩展名.dll。 版本和PublickeyToken可以省略并在GAC程序集中检查
他说没有链接,想用你自己的话来解释。在他帖子的原始版本中(我相信他编辑得很快),没有具体说明!而且,MSDN的措辞总是会更好、更准确。:)提到这是一种新的方式,你会得到+1
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh