2009-06-04 61 views
1

在Visual Studio 2008 SP1中,是否可以将C++ COM项目定位到vcredist 2008而不是vcredist 2008 SP1?使用vcredist的特定版本?

我们的客户有vcredist 2008年安装,我们不想强迫他们安装vcredist 2008 SP1。 (十万台电脑!)

回答

2
  1. 你可以尝试删除嵌入清单(看下的项目设置清单工具)和靶向前SP1 CRuntime版本的应用程序提供自己的清单。
  2. 您也可以部署C运行时自己,下在x86/x64 redist文件夹,你会发现C运行时(Microsoft.VC90.CRT)的文件夹直接复制这些文件夹中的文件夹中你的EXE。
  3. 使用静态的C运行时的选项,从而使C运行时将被用作静态库,它的有用的,如果你没有很多DLL/EXE的。
+0

我想建议1.所创建的清单已经看起来像目标SP1之前: 但是,当我检查依赖Walker它看起来仍然取决于9.0.30729.1(SP1)版本的文件? – 2009-06-05 09:38:35

+0

+1给建议#3。这意味着C运行时将实际编译到您的可执行文件中。这将使exe有点大,但会消除任何vcredist的需要。如果大小确实让你担心,你可以尝试使用PGO将很少使用的代码推送到exe的后端。 – eran 2009-06-07 09:04:02

3

VS2008实际上,在默认情况下,继续针对VS9 RTM REDIST。 依赖检查程序中发生的情况是,当安装VS9 SP1时,还会安装一个策略文件,该文件将重定向尝试将RTM可再发行组件加载到SP1可再发行组件。

为了获得VS9 SP1实际需要,你需要下面的宏添加到您的项目设置SP1运行时间或编译头:

#define _BIND_TO_CURRENT_CRT_VERSION 1