程序集是.NET框架应用程序的主要构造块,它是一个功能集合,并以单个实现单元(一个或多个文件)的形式生成、版本化和部署。所有托管类型和资源或者只在其实现单元中标记为可访问,或者在该单元外由代码标记为可访问。程序集通过其清单(每个程序集不可缺少的部分)进行自我描述,清单可以包含类型元数据、资源信息以及程序集的版本和依赖关系等。
程序集的主要特点包括:
版本控制:
程序集是公共语言运行库中最小的可版本化单元,同一程序集中的所有类型和资源均会被版本化为一个单元。
安全性:
程序集形成安全边界,代码访问安全系统使用程序集信息来确定为程序集中的代码授予的权限集。
类型边界:
每一类型的标识均包括该类型所驻留的程序集的名称,在一个程序集范围内加载的类型不同于在其他程序集范围内加载的类型。
引用边界:
程序集的清单包含用于解析类型和满足资源请求的程序集元数据,它指定在该程序集之外公开的类型和资源。
部署边界:
程序集是支持泾渭执行的单元,只有一个应用程序最初调用的程序集必须存在,其他程序集可以按需检索。
静态与动态:
程序集可以是静态的或动态的,静态程序集存储在磁盘上的可移植可执行文件中,而动态程序集直接从内存运行并在执行前不存储到磁盘上。
程序集可以是强命名或弱命名的。强命名程序集拥有一个发布者的公钥或私钥签名,而弱命名程序集则没有。强命名程序集可以通过公钥和私钥进行唯一的标志、安全策略和版本策略。
在.NET中,程序集通常对应于一个DLL或EXE文件,包含了程序的代码、资源和元数据。程序集是.NET应用程序的基本构建块,用于组织和管理代码、资源和类型信息。