每个程序集(无论是静态的还是动态的)都包含一组数据,用于描述程序集中的元素彼此之间的关系。 程序集清单包含此程序集元数据。 程序集清单包含指定程序集的版本要求和安全标识所需的所有元数据,以及定义程序集范围并解析对资源和类的引用所需的所有元数据。 程序集清单可以存储在具有公共中间语言(CIL)代码的 PE 文件( .exe 或 .dll),也可以存储在仅包含程序集清单信息的独立 PE 文件中。
下图显示了清单的存储方式不同。
对于具有一个关联文件的程序集,清单将合并到 PE 文件中以形成单文件程序集。 您可以创建有独立的清单文件,或清单被合并到同一多文件程序集中某一 PE 文件的多文件程序集。
每一程序集的清单均执行以下功能:
枚举构成该程序集的文件。
控制对该程序集的类型和资源的引用如何映射到包含其声明和实现的文件。
枚举程序集所依赖的其他程序集。
在程序集的使用者和程序集的实现详细信息的使用者之间提供一定程度的间接性。
呈现程序集自述。
程序集清单内容
下表显示了在程序集清单中包含的信息。 前四项:程序集名称、版本号、文化和强名称信息构成了程序集的标识。
信息 | DESCRIPTION |
---|---|
程序集名称 | 一个指定程序集名称的文本字符串。 |
版本号 | 主版本号和次版本号,以及修订号和生成号。 公共语言运行时使用这些数字来强制实施版本策略。 |
文化 | 有关该程序集支持的区域性或语言的信息。 此信息应仅用于将程序集指定为包含区域性或语言特定信息的附属程序集。 (具有区域性信息的程序集被自动假定为附属程序集。) |
强名称信息 | 如果已经为程序集提供了一个强名称,则为来自发行者的公钥。 |
程序集中所有文件的列表 | 在程序集中包含的每一文件的散列及文件名。 请注意,组成程序集的所有文件必须与包含程序集清单的文件位于同一目录中。 |
类型引用信息 | 运行时使用的信息,用于将类型引用映射到包含其声明和实现的文件。 该信息用于从程序集导出的类型。 |
有关被引用程序集的信息 | 被程序集静态引用的其他程序集列表。 每个引用都包含依赖程序集的名称、程序集元数据(版本、区域性、作系统等),以及公钥(如果程序集具有强名称)。 |
可以使用代码中的程序集属性在程序集清单中添加或更改某些信息。 可以更改版本信息和信息属性,包括商标、版权、产品、公司和信息版本。 有关程序集属性的完整列表,请参阅 “设置程序集属性”。