程序集清单

程序集清单（）是.Net Framework中的文本文件，包含了CLI 程序集的元数据，包括程序集的组建间的依赖关系、解决资源与类的引用、版本信息、作用域信息、安全许可等。存储在PE文件(.exe或.dll)用通用中间语言 (MSIL) 代码表示。
嵌入到程序集中的程序集清单可用Microsoft Windows SDK中的IL反汇编程序(ILDASM.exe)查看。 
程序集清单的内容.
下表的前四行：程序集名字、版本号、culture、强名字信息，组成了程序集的identity。
.NET实现.
Manifest是一个以.manifest为后缀的XML文件。其内部的信息：
操作系统首先读取Manifest，获得exe文件需要调用的DLL的manifest。再根据据此信息去寻找对应的DLL。这样就可能区别不同版本的同一个DLL文件。
共享程序集的Manifests存储在WINDOWS/WinSxS/Manifests目录中。这是Windows XP以上版本操作系统提供的非托管（多版本）并行缓存（side-by-side cache）中安装了强名字的系统库的程序集清单。在WinSxS目录下，每个程序集都会有一个目录，另外，还有两个目录分别是Manifests和Policies，其中包含了版本的相关信息。例如：
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
&lt;assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"&gt;
 &lt;noInheritable&gt;&lt;/noInheritable&gt;
 &lt;assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.42" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"&gt;&lt;/assemblyIdentity&gt;
 &lt;file name="msvcr80.dll" hash="2a0d797a8c5eac76e54e98db9682e0938c614b45" hashalg="SHA1"&gt;
 &lt;asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"&gt;
 &lt;dsig:Transforms&gt;
 &lt;dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"&gt;&lt;/dsig:Transform&gt;
 &lt;/dsig:Transforms&gt;
 &lt;dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"&gt;&lt;/dsig:DigestMethod&gt;
 &lt;dsig:DigestValue&gt;phRUExlAeZ8BwmlD8VlO5udAnRE=&lt;/dsig:DigestValue&gt;
 &lt;/asmv2:hash&gt;
 &lt;/file&gt;
 &lt;file name="msvcp80.dll" hash="cc4ca55fb6aa6b7bb8577ab4b649ab77e42f8f91" hashalg="SHA1"&gt;
 &lt;asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"&gt;
 &lt;dsig:Transforms&gt;
 &lt;dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"&gt;&lt;/dsig:Transform&gt;
 &lt;/dsig:Transforms&gt;
 &lt;dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"&gt;&lt;/dsig:DigestMethod&gt;
 &lt;dsig:DigestValue&gt;7AY1JqoUvK3u/6bYWbOagGgAFbc=&lt;/dsig:DigestValue&gt;
 &lt;/asmv2:hash&gt;
 &lt;/file&gt;
 &lt;file name="msvcm80.dll" hash="55e8e87bbde00d1d96cc119ccd94e0c02c9a2768" hashalg="SHA1"&gt;
 &lt;asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"&gt;
 &lt;dsig:Transforms&gt;
 &lt;dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"&gt;&lt;/dsig:Transform&gt;
 &lt;/dsig:Transforms&gt;
 &lt;dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"&gt;&lt;/dsig:DigestMethod&gt;
 &lt;dsig:DigestValue&gt;hWq8zazTsMeKVxWFBa6bnv4hEOw=&lt;/dsig:DigestValue&gt;
 &lt;/asmv2:hash&gt;
 &lt;/file&gt;
&lt;/assembly&gt;
使用者：
&lt;?xml version='1.0' encoding='UTF-8' standalone='yes'?&gt;
&lt;assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'&gt;
 &lt;dependency&gt;
 &lt;dependentAssembly&gt;
 &lt;assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /&gt;
 &lt;/dependentAssembly&gt;
 &lt;/dependency&gt;
&lt;/assembly&gt;
在WINDOWS/WinSxS/Policies目录下的Policy文件，来指出老版本到新版本的确认映射关系。解决库升级带来的版本兼容问题。例如：
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
&lt;!-- Copyright ? 1981-2001 Microsoft Corporation --&gt;
&lt;assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"&gt;
 &lt;assemblyIdentity type="win32-policy" name="policy.8.0.Microsoft.VC80.CRT" version="8.0.50727.42" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/&gt;
 &lt;dependency&gt;
 &lt;dependentAssembly&gt;
 &lt;assemblyIdentity type="win32" name="Microsoft.VC80.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/&gt;
 &lt;bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.42"/&gt;
 &lt;/dependentAssembly&gt;
 &lt;/dependency&gt;
&lt;/assembly&gt;
其中&lt;bindingRedirect&gt;标签便指定了所有8.0.41204.256-8.0.50608.0版本的需求，映射到8.0.50727.42这个系统中安装的比较新的版本的库。