毫无疑问,与 Windows 一起发布的控制库是使用最为广泛的组件库。当如此广泛的使用遇到 Windows 超长的发布时间跨度时,让 Windows 控制库的兼容问题变得非常难以解决。雷蒙德•陈在 MSDN 博客中为 Windows 控制兼容及其面对的挑战提供了一些背景信息,及其相关的说明文件及其同类技术并行执行(SxS)的开发。
SxS 执行部署的原则是,一旦开发的应用程序针对某个特定版本的 Windows 常用控件进行测试之后,该应用程序在其这一版本中必须继续使用相同版本的 Windows 常用控件。共享库从一个版本到下一个版本发生的变化,无论是内部还是微不足道,这种变化都极有可能引起某些应用程序的损坏。声明性的 XML 机制,既说明(manifest)文件,可以让应用程序指定所用的采用控件版本,而不是强制每个应用程序都用 API 来请求常用控件版本。
说明文件可以是一个简单的带有应用程序名称和.manifest 文件扩展名的 XML 文件,该文件与可执行文件位于同一目录,或者也可以作为资源嵌入到应用程序中。说明文件中所含的依赖性信息非常简单,本质上来看,是一列具有版本信息的依赖执行信息。比如 Version 6 的 Windows Common Controls 的使用请求,其说明文件非常简单,具体如下:
Visual C++ 2010 的构建和链接过程中可生产说明文件。下图中演示了 Visual C++ 项目中说明设置提供的各种属性页面。该工具中提供的大多数选项对应的命令行参数可传递至 Manifest SDK 工具(mt.exe),该工具作为 Windows SDK 的一部分一起发布。除了支持传统的与 SxS 设置相关的说明文件选项,还支持用于管理执行和本地 SxS 执行本身的说明文件的生成。
Visual C++ 项目 Manifest 属性