程序集是 一个或多个文件的集合,这些文件经过编译后生成,能够被公共语言运行库(CLR)识别和执行。程序集是.NET框架应用程序的主要构造块,它包括类型定义文件、资源文件以及其他可能的依赖项。程序集可以包含一个或多个类型定义文件(.dll文件中的.class文件)和资源文件,它们共同定义了程序集的逻辑和物理表示。
程序集的主要特点包括:
版本控制:
程序集是版本化单元,这意味着它们可以独立地进行版本控制。同一程序集中的所有类型和资源都会被版本化为一个单元,程序集的清单描述了依赖项程序集的版本依赖性。
安全边界:
程序集形成安全边界,程序集内的代码可以请求和授予权限。代码访问安全系统使用程序集信息来确定为程序集中的代码授予的权限集。
类型边界:
程序集形成类型边界,每个类型的标识都包括该类型所驻留的程序集名称。这意味着在不同程序集中加载的同一类型是不同的。
引用范围边界:
程序集的清单包含用于解析类型和满足资源请求的程序集元数据,它指定了在该程序集之外公开的类型和资源。
部署单元:
程序集可以作为单元进行部署,应用程序在启动时只需要加载最初调用的程序集,其他程序集可以按需检索,这有助于保持应用程序的精简性。
泾渭执行:
程序集支持泾渭执行,这意味着可以在同一应用程序中同时运行多个不同版本的程序集。
静态与动态:
程序集可以是静态的,存储在磁盘上的可移植可执行(PE)文件中,也可以是动态的,直接从内存运行并在执行前不存储到磁盘上。
程序集可以是强命名或弱命名的。强命名程序集具有发布者的公钥或私钥签名,这使得它们具有唯一性,并可以用于安全策略和版本策略。
总的来说,程序集是.NET应用程序的基本构建块,它们封装了代码、资源和元数据,并提供了版本控制、安全性和部署的机制。