如何设置Visual Studio 2005目标的VC ++运行时版本

时间:2010-04-20 03:50:58

标签: visual-studio-2005 visual-c++

我有一个包含VC ++项目的应用程序(以及C#项目)。以前,(即在过去一年左右)构建完成后,Visual Studio 2005似乎是针对VC ++运行时版本8.0.50727.762。至少,这就是Assembly.dll.intermediate.manifest文件告诉我的内容:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

此版本号与Visual Studio 2005版本号匹配。应用程序在部署到Web服务器时工作正常。阳光灿烂,鸟儿在歌唱,一切都与世界一致。

现在情况发生了变化。我不知道是什么 - 一个安全补丁,一个模糊的Visual Studio设置或其他东西。现在,Visual Studio 2005似乎针对的是VC ++运行时的错误版本:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.4053' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

当我将应用程序部署到Web服务器时,我得到了可怕的此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。 (来自HRESULT的异常:0x800736B1)错误。

即使我重新编译应用程序的早期版本,也会出现此问题。我完全可以保证在解决方案中什么都没有已经改变了 - 我们将解决方案的全部内容压缩为构建过程的一部分并将其存档。我已将其中的一些解压缩到临时目录,验证前一个清单文件是指8.0.50727.762,在命令行使用完全相同的命令重新编译,然后验证新的清单文件现在引用8.0.50727.4053。 / p>

我使用的是Microsoft Visual Studio 2005版本8.0.50727.762(SP.050727-7600)和Microsoft Visual C ++ 2005 77646-008-0000007-41610。

为什么Visual Studio会恢复到以前版本的VC ++运行时?如何指定应使用哪个版本?这里出了什么问题?

更新

天啊 - 我是个白痴。 X.7&gt; X.4,但是,X.762&lt; X.4053其中X是版本号。因此,8.0.50727.4053 更新而不是8.0.50727.762。现在整个事情都有意义。我将此作为个人提醒,我认为我是世界上最聪明的人......

2 个答案:

答案 0 :(得分:1)

可能发生的事情是您的开发机器安装了更新VC ++运行时的新服务更新。没什么大不了的,只需在你的网络服务器上安装所有你需要的更新,事情就会再次发生。

如果你真的需要恢复,那么你需要找到并卸载更改运行时库的更新,没有办法在vs 2005中更改所选的运行时,它将使用最新的和最新的一找到它。

答案 1 :(得分:0)

使用_BIND_TO_CURRENT_XXX_VERSION 1(其中XXX为CRT / MFC / ATL / OPENMP)在VistualStudio RTM的VCRedist和开发框中的最新版本之间进行选择。

http://msdn.microsoft.com/en-us/library/cc664727%28VS.90%29.aspx

PS:不太确定但_BIND_TO_CURRENT_VCLIBS_VERSION报告了一些问题,因此最好为每个MFC / ATL等使用宏。