Windows Vista SDK,Visual C++ 2005 SP1和Merge Module Hell

来源:互联网 发布:网络诈骗多少钱能报案 编辑:程序博客网 时间:2024/04/29 23:21

使用过DLL的人都知道,重用二进制的代码很容易造成DLL地狱,这也是为什么Windows引入系统文件保护的原因之一。在Visual C++2005中引入的程序集清单(Assembly Manifest)看起来似乎可以解决这个问题,但是很多人发现在把Visual Studio更新到SP1后创建的安装程序项目不再能创建可以正常运行的安装程序。他们得到的是一个错误消息:应用程序配置错误,请重新安装应用程序。

看起来这个问题的原因是Windows Vista SDK和Visual Studio 2005 SP1的安装都把Visual C++2005运行时刻库(CRT)的合并模块安装到C:/Program Files/Common Files/Merge Modules下。Windows Vista平台SDK中的是CRT 8.0.50727.42,而Visual Studio 2005 SP1包含的是CRT 8.0.50727.752。如果安装完Visual Studio 2005 SP1之后再安装/修复Windows Vista SDK,那么C:/Program Files/Common Files/Merge Modules下会是Windows Vista SDK的旧版本,这会使得安装程序项目编译出有问题的部署包,因为应用程序使用的是新版本的CRT。

解决这个问题的方法是在安装/修复Windows Vista SDK之后重新安装Visual Studio 2005 SP1——你可能需要6.2G的系统盘剩余空间来完成这个安装。另外,为了保险起见,安装之后应该备份C:/Program Files/Common Files/Merge Modules下面的文件,至少也要把它们设为只读文件。

原创粉丝点击