程序集是代码进行编译是的一个逻辑单元
,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件**.exe
和类库文件
.dll**)。由于程序集在编译后并不一定会生成单个文件,而可能会生成多个物理文件,甚至可能会生成分布在不同位置的多个物理文件,所以
程序集是一个逻辑单元,而不是一个物理单元
。即程序集在逻辑上是一个编译单元,但在物理储存上可以有多种存在形式。对于静态程序集可以生成单个或多个文件,而动态程序集是存在于内存中的。在C#中程序集处处可见,因为
任何基于.NET的代码在编译时都至少存在一个程序集
。
基于.NET框架的.dll库是一个完整的程序集,需要事先引用对应的类库。从代码的结构上看,
一个程序集可以包含一个或多个命名空间
,而
每个命名空间中又可以包含子命名空间或类型列表
。由于程序集在编译后可以生成多个模块文件,因此一个物理文件并不代表它就是一个程序集,一个程序集并不一定只有一个文件。在VS开发环境中,一个解决方案可以包含多个项目,而每个项目就是一个程序集。
应用程序结构:包含 应用程序域(AppDomain),程序集(Assembly),模块(Module),类型(Type),成员(EventInfo、FieldInfo、MethodInfo、PropertyInfo) 几个层次。