尽管程序集可能由多个模块组成,但是一个模块往往只属于一个程序集。假如出现两个程序集都引用同一个公共模块的情况,
CLR将这个公共模块视为两个不同的模块,即公共模块中的每个类型都有两个不同的拷贝。
在CLR中,程序集是部署的“原子”,被用来对CLR模块进行打包、加载、分发以及版本控制(物理的)。虽然程序集可能
包括多个模块以及辅助文件,但程序集本身被作为原子单元进行命名和版本化的。
程序集规定了组件中类型定义的作用域。CLR类型将它们的程序集名/类型名对作唯一标识。
|
*在VB.NET中,通过关键字DIM声明的方法默认为public,而字段默认为private。
程序集名字:
每个程序集的都采用四部分(four-part)名字,作为唯一标识符。这四部分名字由名称、文化、开发人员以及组件版本构成。
这些名字被存放于程序的清单中,以及引用它的所有程序集的程序集清单中。在加载时,CLR使用四部程序集名字找到正确的组件。
程序集的命名约定通常是基于命名空间前缀的。例如,.NET XML被部署在System.Xml程序集中,它包含的所有类型都使用System.Xml的
命名前缀。这仅仅是个约定,而不是规则。例如,类型System.Object存放在mscorlib的程序集中,而不是System的程序集中。
程序集名字的Name属性往往与程序集清单的底层文件名(不包含任何文件扩展明,尽管它们可能有用)相对应。当构建(Build)程序集时,
名字的这个部分是由编译器根据目标文件名自动选择的。