【问题标题】:How to set which version of the VC++ runtime Visual Studio 2005 targets如何设置 VC++ 运行时 Visual Studio 2005 的目标版本
【发布时间】:2026-01-07 04:35:02
【问题描述】:

我有一个包含 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 版本号匹配。该应用程序在部署到网络服务器时运行良好。阳光明媚,鸟儿在歌唱,世界一切安好。

现在发生了一些变化。我不知道是什么——一个安全补丁、一个不起眼的 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>

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

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

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

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

更新

天哪——我真是个白痴。 X.7 > X.4,但是,X.762 更新。现在整件事都说得通了。我把这个作为个人提醒,一直以来我认为我是世界上最聪明的人......

【问题讨论】:

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


    【解决方案1】:

    可能发生的情况是您的开发机器安装了更新 VC++ 运行时的新服务更新。没什么大不了的,只需在您的网络服务器上安装所有需要的更新,一切都会再次变得美好。

    如果你真的需要还原,那么你需要找到并卸载更改运行时库的更新,在vs 2005中无法更改所选运行时,它将使用最新和最新的它找到了一个。

    【讨论】:

      【解决方案2】:

      使用 _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 等使用宏。

      【讨论】:

        最近更新 更多