程序集(Assembly)是.NET框架中的一个重要概念,它是一种用来存储已编译代码和相关元数据的单元。在.NET中,程序集是部署、版本控制、安全性和代码重用的基本单位。程序集可以分为两种类型:可执行程序集(ExecutableAssembly)和类库程序集(LibraryAssembly)。可执行程序集是一种包含一个入口点(Main方法)的程序集,它可以直接作为应用程序执行。
程序集的名称存储在元数据中,它对程序集的范围及应用程序对程序集的使用有重要影响。强名称程序集有一个完全限定的名称,由程序集的名称、区域性、公钥及版本号组成。该名称通常称为显示名称,对于加载的程序集,可通过使用属性来获得它。运行时使用这些信息来定位程序集并将其同其他同名的程序集区分开。例如,名为myTypes的强名称程序集可以具有下列完全限定名:myTypes, Version=1.0.0.0。
程序集的结构包括:
程序集清单:
类似于淘宝购物的配送清单,说明里面包含了什么内容。
类型元数据:
描述程序集中定义的类型的信息,由一些元数据表组成,包含类型的名称、方法、属性等。
IL代码:
这些代码被封装在exe或dll文件中。
程序集可以通过其清单进行自我描述,清单中包含了程序集的元数据信息,这些信息用于在运行时定位和加载程序集。程序集可以是私有的,也可以是共享的。私有程序集必须和应用程序在相同的目录下,而共享程序集可以被多个应用程序共享。
总结:
程序集是.NET中用于存储已编译代码和相关元数据的单元。
程序集有完全限定的名称,包括名称、区域性、公钥及版本号。
程序集分为可执行程序集和类库程序集。
程序集的结构包括程序集清单、类型元数据和IL代码。
程序集可以是私有的或共享的。