【发布时间】: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++