VS2008 部署应用程序 “应用程序配置不正确,程序无法启动”的解决方法
对于release版程序
比较的简单的方法是采用共享程序集的方式来部署,即主要在要部署的机器上安装vcredist.exe(Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
也可以采用下面debug程序的私有程序集的部署方法
=============================================
对于debug版本程序
◆ 若目标机器安装了VS开发环境(vs2005 sp1/vs2008 sp1),则在机器上同时也安装了共享并行程序集,包含各个版本的dll(8.0、9.0版本,位于C:\Windows\Winsxs目录下),则不需做任何的部署,直接将需要发布的程序拷贝到目标机器上就可以了,这和release版程序的发布方式是一样的
◆ 在没有安装VS开发环境(安装了vs2005 sp1/vs2008 sp1)的机器上,只能采用私有程序集的方式来部署(因为vcredist.exe只安装了release版的CRT、MFC、ATL的DLL和manifest文件,没有对应的debug版本)
已知的2种方法:(针对vs2008 sp1,安装了sp1之后,在系统上会存在两个版本的CRT、MFC、ATL的DLL:9.0.21022.8和9.0.30729.1)
1、使当前程序的manifest文件中的依赖项的版本号与vc安装目录下的redist目录下的dll的版本一致,均为9.0.30729.1
方法:
a、在编译项目时定义一个符号_BIND_TO_CURRENT_VCLIBS_VERSION,该符号定义于C:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtassem.h 文件中(假设VC安装在c盘),这样使得编译后的程序的manifest依赖于CRT 9.0.30729.1版本(同样的,对于MFC也应该定义一个类似的符号,大家可以自己在VC的include目录下搜索“9.0.30729.1”或“9.0.21022.8”,就可以找到对应的定义该符号的头文件)
b、通过外部工具修改生成的exe或dll中manifest文件(好像windows sdk中的mt.exe可以做到,不过关于这个工具的资料十分的少)
2、将VC安装目录下的redist目录下(C:\Program Files\Microsoft Visual Studio 9.0\VC\redist)的 Microsoft.VC90.CRT拷贝到要发布的程序的当前目录下,修改Microsoft.VC90.CRT目录中的 Microsoft.VC90.CRT.manifest文件中的版本号,改成9.0.21022.8,这样使得程序误以为该目录下的vc的dll版本是 9.0.21022.8(实质上仍然是9.0.30729.1版本)
本文详细介绍了在使用VS2008部署应用程序时遇到的'应用程序配置不正确,程序无法启动'问题的解决方法。针对release版和debug版本程序提供了详细的部署策略,包括采用共享程序集和私有程序集的部署方式,以及如何调整manifest文件来确保程序在不同环境下顺利运行。

5580

被折叠的 条评论
为什么被折叠?



