1.2 将托管模块合并成程序集
2011-11-02 14:11
141 查看
CLR 实际不和模块一起工作。 相反,它是程序集的实际不和模块一起工作。程序集 (assembly assemblyassembly assembly )是一个抽象的概念,初学者往很难把握它的精髓。首先,程序集是一个或多模块/资源文件的逻辑性分组。其次,程序集是 资源文件的逻辑性分组。其次,程序集是重用、安全性以及版本控制的最小单元。取决于你对编译器或工具选择, 既可生成文件程序集。在 CLR的世界中,程序集相当于一个“组件”。
第 2章会深入探讨程序 集。所以,这里不准备在它上面花费太多的笔墨。只想提醒一句:利用“程序集”这种概念性的东西,可以将一组文件当作个单独实体来对待。
图 1-2有助于理解程序集。 在这幅图中,一些托管模块和资源(或数据)文件准备交由一个工具处理。该工具生成单独一个PE32(+)文件来表示文件的逻辑性分组。实际发生的事情是,这个PE(+)文件包含了一个名为“清单”(manifest)的数据块。清单是由元数据表构成的另一种集合。这些表描述了构成程序集的文件,由程序集中的文件实现的公开导出的类型,以及与程序集关联在一起的资源或者数据文件。
图1-2 将托管模块合并成程序集
对于一个可重用、可保护的、可版本控制的组件,程序集把它的逻辑表示和物理表示区分开。具体如何将代码和资源划分到不同的文件中,这完全取决于个人。例如,可以将很少用到的类型和资源放到单独的文件中,并将这些文件作为程序集的一部分。取决于运行时的需要,可从网上下载这些当度的文件。如果文件永远用不上,则永远不会下载。这样不仅节省磁盘空间,还缩短了安装时间。利用程序集,可以在不同的地方部署文件,同时仍然将所有文件作为一个整体来对待。
在程序集的模块中,还包含与引用的程序集有关的信息(包含它们的版本号)。这些信息使程序集能够自描述(self-describing)。换言之,CLR能判断出为了执行程序集中的代码,程序集的直接依赖对象(immediate dependency)是什么。不需要在注册表或Active Directory Domain Service(ADDS)中保存额外的信息。由于无需额外信息,所以相较于非托管组件,程序集部署起来容易得多。
返回目录页
注解:
所谓公开导出的类型,就是程序集中定义的public类型,它们在程序集的外部可见。
第 2章会深入探讨程序 集。所以,这里不准备在它上面花费太多的笔墨。只想提醒一句:利用“程序集”这种概念性的东西,可以将一组文件当作个单独实体来对待。
图 1-2有助于理解程序集。 在这幅图中,一些托管模块和资源(或数据)文件准备交由一个工具处理。该工具生成单独一个PE32(+)文件来表示文件的逻辑性分组。实际发生的事情是,这个PE(+)文件包含了一个名为“清单”(manifest)的数据块。清单是由元数据表构成的另一种集合。这些表描述了构成程序集的文件,由程序集中的文件实现的公开导出的类型,以及与程序集关联在一起的资源或者数据文件。
图1-2 将托管模块合并成程序集
对于一个可重用、可保护的、可版本控制的组件,程序集把它的逻辑表示和物理表示区分开。具体如何将代码和资源划分到不同的文件中,这完全取决于个人。例如,可以将很少用到的类型和资源放到单独的文件中,并将这些文件作为程序集的一部分。取决于运行时的需要,可从网上下载这些当度的文件。如果文件永远用不上,则永远不会下载。这样不仅节省磁盘空间,还缩短了安装时间。利用程序集,可以在不同的地方部署文件,同时仍然将所有文件作为一个整体来对待。
在程序集的模块中,还包含与引用的程序集有关的信息(包含它们的版本号)。这些信息使程序集能够自描述(self-describing)。换言之,CLR能判断出为了执行程序集中的代码,程序集的直接依赖对象(immediate dependency)是什么。不需要在注册表或Active Directory Domain Service(ADDS)中保存额外的信息。由于无需额外信息,所以相较于非托管组件,程序集部署起来容易得多。
返回目录页
注解:
所谓公开导出的类型,就是程序集中定义的public类型,它们在程序集的外部可见。
相关文章推荐
- [CLR via C#]1.2 将托管模块合并成程序集
- [CLR via C#]1.2 将托管模块合并成程序集
- CLR via C# 3 读书笔记(2):第1章 CLR执行模型 — 1.2 将托管模块组合为程序集
- CLR via C# FOURTH EDITION (二) 将托管模块合并成程序集
- 1.2 将托管模块组合成程序集
- 将托管模块合并成程序集
- 程序集的内部结构(托管模块、元素局、IL代码的分布情况)
- 【C#进阶系列】02 PE文件,程序集,托管模块,元数据——还是那个Hello world
- 2.4 将模块合并成程序集
- 程序集与托管模块的概念
- clrvia,初读CLR Via C# :CLR,托管模块,程序集,Main方法的运行过程
- 【CLR的执行模型:将托管代码合并成程序集(2)】
- 托管模块与程序集
- 程序集与托管模块的概念 .NET
- 源代码编译成托管代码托管代码合并成程序集
- 【CLR的执行模型:将托管代码合并成程序集(2)】
- CLR_via_C#.3rd 翻译[1.2将托管模块组合到集]
- .NET Framwork 之 源代码编译成托管代码托管代码合并成程序集
- .Net 托管模块与程序集的关系
- 将托管模块组合成程序集