首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

11.9  研究GAC的内部结构

到现在为止,一切都还不错。下面让我们研究GAC本身的内部结构。使用Windows资源管理器查看GAC,每一个图标表示共享程序集的每一个版本。这些图形化界面(shell)由名为shfusion.dllCOM组件实现。可以想到,每一个图标其实都是一个拥有详细内容的目录结构。

为了更好地理解GAC究竟是什么,打开一个命令行窗口,转到Assembly目录下:

 

cd c:\windows\assembly

 

然后输入dir命令,会看到一个名为GAC_MSIL的文件夹(如图11-26所示)。

11-26  隐藏的GAC_MSIL子目录

进入GAC_MSIL目录,输入dir命令。会看到一个子目录列表。其中子目录的名称与shfusion.dll显示的图标名是完全一一对应的。进入CarLibrary子目录,再次输入dir命令(如图11-27所示)。

11-27  隐藏的CarLibrary子目录的内部

可见,GAC为共享程序集的每一个版本都维护一个子目录。子目录以这样的方式命名:<versionofAssembly>_PublicKeyToken的值。进入当前目录的CarLibrary1.0.0.0版本的目录,会看到对应的代码库副本(如图11-28所示)。

11-28  看,CarLibrary.dllGAC中的副本

当把一个强名称程序集安装到GAC后,操作系统会在Assembly子目录下创建对应的目录的结构。这样CLR就可以轻松管理某一程序集的多个版本,避免了文件名称冲突的问题(程序集的不同版本拥有完全一样的文件名*.dll)。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论