Visual Studio 2008 - 为什么我的 VS2010 本机 C++ 应用程序不会突然启动,从而出现并排错误?

visual studio 2008 - Why won't my VS2010 native C++ application suddenly start, giving a side-by-side error?

本文关键字:启动 错误 排错 突然 为什么 2008 Studio 我的 VS2010 应用程序 C++      更新时间:2023-10-16

硬件升级后,我不得不重新安装系统(Win7)。在升级之前,我还运行了Win7和VS2010,我的应用程序在发布和调试版本中都运行得没有问题。现在我编译并链接它,但当我尝试运行它时,我得到:

应用程序无法启动,因为其并行配置不正确。有关详细信息,请参阅应用程序事件日志或使用命令行sxstrace.exe工具。

事件日志显示:

找不到依赖程序集Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。请使用sxstrace.exe进行详细诊断。

用于特定可执行文件。奇怪的是,我在控制面板中的已安装程序中看到了VS2008运行时。更奇怪的是,它一周前还在我的旧装置上工作。在升级到VS2010之前,我在那里有VS2008,所以也许这就是原因。无论如何,我也不明白为什么VS2010不将我的二进制文件与最新的(VC10)运行库链接起来,而是依赖于(不存在的?)VC9.0库。我可以做些什么来运行我的应用程序?

编辑:我在此处包含sxtrace的输出。有一些对可执行文件的引用,但它们看起来都一样,我选择了32位的,因为应用程序是以32位:构建的

F: \cci\Debug>sxtrace跟踪-日志文件:Trace.etl跟踪已启动。跟踪将保存到文件Trace.etl中。按Enter键停止跟踪。。。

F: \cci\Debug>sxtrace分析-日志文件:trace.etl-输出文件:sxs.out正在分析日志文件跟踪.etl。。。分析完成!输出保存到文件sx.out.

sx.out:的内容

开始生成激活上下文
输入参数:
标志=0
ProcessorArchitecture=Wow32
CultureFallBacks=en-US;en
ManifestPath=F:\cci\Debug\gui.exe
AssemblyDirectory=F:\cci\Debug\
应用程序配置文件=
信息:正在分析清单文件F:\cci\Debug\gui.exe。
信息:清单定义标识为(null)
信息:参考:Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
信息:正在解析引用Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。
信息:正在解析ProcessorArchitecture WOW64的引用。
信息:正在解析非特定区域性的引用
信息:正在应用绑定策略
信息:找不到发布者策略
信息:未找到绑定策略重定向
信息:开始程序集探测
信息:在WinSxS中找不到程序集
信息:尝试探测C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL中的清单。
信息:未找到非特定区域性的清单
信息:结束程序集探测
信息:正在解析ProcessorArchitecture x86的引用。
信息:正在解析非特定区域性的引用
信息:正在应用绑定策略
信息:找不到发布者策略
信息:未找到绑定策略重定向
信息:开始程序集探测
信息:在WinSxS中找不到程序集
信息:尝试探测C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL中的清单。
信息:尝试探测F:\cci\Debug\Microsoft.VC90.DebugCRT.DLL中的清单。
信息:尝试探测F:\cci\Debug\Microsoft.VC90.DebugCRT.manifest上的清单。
信息:尝试探测F:\cci\Debug\Microsoft.VC90.DebugCRT\Microsoft.VS90.DebugCRT.DLL中的清单。
信息:尝试探测F:\cci\Debug\Microsoft.VC90.DebugCRT\Microsoft.VS90.DebugCRT.manifest处的清单。
信息:未找到非特定区域性的清单
信息:结束程序集探测
错误:无法解析引用Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。
错误:激活上下文生成失败
结束激活上下文生成。

显示在"控制面板"中已安装程序中的"VS2008运行时"不包括调试运行时。它是可重新分发的运行时,所以它只有运行时的"发布"版本。但是,由于在重新安装之前,您的机器上已经安装了VS2008,这就是它以前工作的原因——调试运行时包含在开发工具中。

一些解决问题的选项:

  • 重新安装VS 2008(我认为如果您不能再访问另一个,VC++Express 2008就足够了)
  • 使用VS2010(或您想要的任何版本)重建程序

如果你想让没有安装工具的人(可能包括你)使用你的程序,你应该考虑在发布模式下构建它和/或使用静态链接的运行时构建它。

Microsoft.VC90.*调试*CRT

是的,该DLL在您的计算机上不可用,您没有安装VS2008。你也不能从微软获得它,它是一个不可分发的文件。

请担心为什么您的VS2010项目依赖于VS2008版本的CRT,这是非常不健康的。还有一个非常令人不快的部署头痛,有足够的理由来解决这个问题。

除了安装VS2008之外,您还可以在另一台安装了VS2008的计算机上创建一个安装和部署项目,以获取新计算机上的调试DLL。项目+属性+先决条件,取消勾选.NET框架。Project+Add+Merge Module可从c:\program files\common files\Merge Module添加DLL和策略文件的调试合并模块。

我遇到过一个案例,在VS 2008环境中构建COM DLL(仅用于开发目的),而项目中的其他组件使用的是更新版本的Visual Studio。这组说明详细介绍了如何使用Visual Studio 2008安装程序仅安装VS 2008 VC++运行时文件,而不安装其他不必要的软件。如果可能的话,建议在安装Visual Studio 2010或任何后续VS版本之前遵循这些步骤。

  1. 运行Visual Studio 2008安装程序。ISO可以使用MSDN Subscriber Downloads下载
  2. 在"Visual Studio 2008安装程序"对话框中,选择"安装Visual Studio 2008"
  3. 出现"Microsoft Visual Studio 2008"对话框。单击"下一步"
  4. "起始页"-接受许可条款,单击"下一步"
  5. "选项页"-选择"自定义",单击"下一步"
  6. "选项页"-取消选择所有内容。导航到:Microsoft Visual Studio 2008 Professional->语言工具->Visual C++->Visual C++工具。选中"Visual C++运行时库"(下面的所有内容都已选中)。单击"安装"
  7. -->安装继续
  8. 出现"完成页面"。单击"完成"
  9. "Microsoft Visual Studio 2008"对话框再次出现。单击"退出"安装后,卸载已安装的东西,但不能选择不安装。从"添加/删除程序"(程序和功能)中,卸载以下内容:
    • Microsoft SQL Server数据库发布向导1.2
    • Microsoft Visual Studio Web创作组件
    • Microsoft文档资源管理器2008
    • Microsoft Windows SDK for Visual Studio 2008.NET Framework工具
    • Microsoft SQL Server Compact 3.5简体中文
    • Microsoft SQL Server Compact 3.5设计工具简体中文
    • Microsoft Visual Studio 2008远程调试器
    • Microsoft Visual Studio 2008远程调试器精简版(x64)-简体中文
    • Microsoft Windows SDK for Visual Studio 2008工具
    • Microsoft Windows SDK for Visual Studio 2008标头和库
    • Microsoft Windows SDK for Visual Studio 2008 SDK参考程序集和IntelliSense
    • Microsoft Visual Studio 2008系统必备
    • Microsoft SQL Server 2008管理对象
    • 适用于Win32的Microsoft Windows SDK for Visual Studio 2008 SP1学习工具
    • Microsoft Windows SDK for Visual Studio 2008 SP1.NET Framework学习工具-enu

卸载这些产品后,只剩下两个产品(从VS 2008安装):

  • Microsoft Visual C++2008 Redistributable-x86 9.0.30729
  • Microsoft Visual Studio 2008专业版-简体中文