CLR via C# 读书笔记1-2

来源:互联网 发布:2017怎样养淘宝小号 编辑:程序博客网 时间:2024/06/10 01:40

托管模块集成在程序集(Assemblies)中

CLR 实际上并不处理模块,它处理程序集。程序集是一个或多个模块/资源文件的集合,也是最小的可复用,安全性,版本化的最小单位。根据你选择的编译器,你可以生成一个或多个程序集。在 CLR 的概念中,这称之为组件(component)。
插图 1-2 将帮助你理解程序集到底是什么。托管模块和资源文件经过一个工具的处理集成为程序集,这个工具生成一个 PE32(+) 文件,这个文件包含了一块数据信息称之为manifest。而这个 manifest 是另一组元数据(metadata),他们描述了组成这个程序集的文件,公有类型以及资源数据。

通常,编译器负责把生成的托管模块组入到一个程序集中,并不包含其它的内容。即:一个程序集就是一个托管模块。在编译的过程中不包含其它处理,如果你需要把其它文件组入到这个程序集中则需要其他工具 (例如 assembly linker, AL.exe) 。
一个程序集模块包含了必要的信息,保证其是自我描述 (self-describing) 的,所以 CLR 可以直接检测程序集的依赖项目保证该程序集的顺利运行,不需要再访问注册表或者 Active Directory Domain Services (AD DS)。(比起非托管组件这简单了许多)