将托管模块组合成程序集
2009-06-06 15:05
113 查看
CLR不是直接与托管模块打交道, 而是和程序集(assembly)打交道. 一个程序集是一个抽象的概念, 开始的时候很难掌握. 首先, 一个程序集是一个或多个托管模块或者资源文件的逻辑上的组合. 第二, 一个程序集是重用, 安全性, 版本控制的最小单元. 依赖于你选择的编译器或工具, 你能产生单文件或者多文件的程序集. 在CLR的世界中, 一个程序集就称为一个组件(component). 下图将帮助解释什么是程序集. 在这个图中, 一些托管模块和资源(或数据)文件通过一个工具来处理. 这个工具产生一个PE32(+)文件, 它代表了文件的逻辑组合. 这个PE32(+)文件包含一个数据块, 它称为manifest, 这个manifest是另外一组metadata表, 这些表描述了组成程序集的文件, 以及和程序集有关的资源和数据文件.
默认地, 编译器实际上完成了将托管模块组合到一个程序集的工作; 也就是说, C#编译器产生的托管模块中包含着一个manifest, 这个manifest表明程序集只包含一个文件, 因此, 对于只有一个托管模块而没有资源(或数据)文件的项目来说, 程序集就是托管的模块, 你不需要额外的步骤来构建程序集. 如果你想组合一组文件到一个程序集中, 你必须使用更多的工具(例如汇编连机器, AL.exe)和它们的命令行编译选项. 一个程序集允许你分离可重用, 可部署, 可以版本控制的组件的逻辑表示和物理表示. 如何分割你的代码和资源到不同的文件完全取决于你自己. 举个例子来说, 你可以把很少使用的类型或资源放到一个单独的文件中, 并构成程序集. 这个单独的文件可以放到web上供人下载. 如果这个文件从来不需要使用, 那么它们永远都不需要被下载, 从而节约了磁盘空间以及安装的时间. 程序集允许你分割文件的部署方式, 而仍然把所有的文件作为单独的集合体. 一个程序集模块也包含着关于被引用的程序集的信息(包括它们的版本号). 这个信息使得一个程序集是自我描述的(self-describing). 换句话说, CLR能确定程序集的依赖的信息, 而不需要从注册表或者微软活动目录服务中获得信息. 因为不需要额外的信息, 部署程序集比部署非托管的组件更加容易.
默认地, 编译器实际上完成了将托管模块组合到一个程序集的工作; 也就是说, C#编译器产生的托管模块中包含着一个manifest, 这个manifest表明程序集只包含一个文件, 因此, 对于只有一个托管模块而没有资源(或数据)文件的项目来说, 程序集就是托管的模块, 你不需要额外的步骤来构建程序集. 如果你想组合一组文件到一个程序集中, 你必须使用更多的工具(例如汇编连机器, AL.exe)和它们的命令行编译选项. 一个程序集允许你分离可重用, 可部署, 可以版本控制的组件的逻辑表示和物理表示. 如何分割你的代码和资源到不同的文件完全取决于你自己. 举个例子来说, 你可以把很少使用的类型或资源放到一个单独的文件中, 并构成程序集. 这个单独的文件可以放到web上供人下载. 如果这个文件从来不需要使用, 那么它们永远都不需要被下载, 从而节约了磁盘空间以及安装的时间. 程序集允许你分割文件的部署方式, 而仍然把所有的文件作为单独的集合体. 一个程序集模块也包含着关于被引用的程序集的信息(包括它们的版本号). 这个信息使得一个程序集是自我描述的(self-describing). 换句话说, CLR能确定程序集的依赖的信息, 而不需要从注册表或者微软活动目录服务中获得信息. 因为不需要额外的信息, 部署程序集比部署非托管的组件更加容易.
相关文章推荐
- CLR via C# 3 读书笔记(2):第1章 CLR执行模型 — 1.2 将托管模块组合为程序集
- 1.2 将托管模块组合成程序集
- 程序集与托管模块的概念(转)
- CLR_via_C#.3rd 翻译[1.2将托管模块组合到集]
- 1.2 将托管模块合并成程序集
- CLR via C# 3 读书笔记(13):第2章 生成、打包、部署和管理应用程序与类型 — 2.4 将模块组合为程序集(下)
- 【C#进阶系列】02 PE文件,程序集,托管模块,元数据——还是那个Hello world
- 程序集和托管模块
- 程序集与托管模块的概念 .NET
- .Net Framework 之 托管模块与程序集的关系
- CLR via C# 3 读书笔记(12):第2章 生成、打包、部署和管理应用程序与类型 — 2.4 将模块组合为程序集(上)
- CLR via C# FOURTH EDITION (二) 将托管模块合并成程序集
- 多个托管模块构成同一个程序集
- [CLR via C#]1.2 将托管模块合并成程序集
- 将托管模块合并成程序集
- clrvia,初读CLR Via C# :CLR,托管模块,程序集,Main方法的运行过程
- .NET程序集与托管模块
- 程序集和托管模块
- 程序集与托管模块的概念
- 托管模块与程序集