程序集清单()是.Net Framework中的文本文件,包含了CLI 程序集的元数据,包括程序集的组建间的依赖关系、解决资源与类的引用、版本信息、作用域信息、安全许可等。存储在PE文件(.exe或.dll)用通用中间语言 (MSIL) 代码表示。
嵌入到程序集中的程序集清单可用Microsoft Windows SDK中的IL反汇编程序(ILDASM.exe)查看。
程序集清单的内容
下表的前四行:程序集名字、版本号、culture、强名字信息,组成了程序集的identity。
.NET实现
Manifest是一个以.manifest为后缀的XML文件。其内部的信息:
- 元素则标识着一个唯一的程序集
- 指定了组成程序集的文件及Windows类。
操作系统首先读取Manifest,获得exe文件需要调用的DLL的manifest。再根据据此信息去寻找对应的DLL。这样就可能区别不同版本的同一个DLL文件。
共享程序集的Manifests存储在WINDOWS/WinSxS/Manifests目录中。这是Windows XP以上版本操作系统提供的非托管(多版本)并行缓存(side-by-side cache)中安装了强名字的系统库的程序集清单。在WinSxS目录下,每个程序集都会有一个目录,另外,还有两个目录分别是Manifests和Policies,其中包含了版本的相关信息。例如:
phRUExlAeZ8BwmlD8VlO5udAnRE=
7AY1JqoUvK3u/6bYWbOagGgAFbc=
hWq8zazTsMeKVxWFBa6bnv4hEOw=
使用者:
在WINDOWS/WinSxS/Policies目录下的Policy文件,来指出老版本到新版本的确认映射关系。解决库升级带来的版本兼容问题。例如:
其中标签便指定了所有8.0.41204.256-8.0.50608.0版本的需求,映射到8.0.50727.42这个系统中安装的比较新的版本的库。
参考文献
评论 (0)