2009-06-04 33 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