【问题标题】:Error: "Application has failed to start because its side-by-side configuration is incorrect"错误:“应用程序无法启动,因为它的并排配置不正确”
【发布时间】:2011-05-23 07:05:55
【问题描述】:

我使用 Visual Studio 2008 创建了一个 MFC 应用程序,该应用程序在 Windows XP 上运行良好。但是当我尝试在Windows Vista 中执行相同的 EXE 文件时,我得到了:

错误:应用程序无法启动,因为它的并排配置不正确

当我检查事件查看器时,下面是它所说的内容:

Log Name:      Application
Source:        SideBySide
Date:          12/10/2010 10:06:08 AM
Event ID:      33
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      WIN-8A4INI0BH2R
Description:
Activation context generation failed for "C:\MyApp.exe". Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="SideBySide" />
    <EventID Qualifiers="49409">33</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2010-12-10T04:36:08.000Z" />
    <EventRecordID>181</EventRecordID>
    <Channel>Application</Channel>
    <Computer>WIN-8A4INI0BH2R</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"</Data>
    <Data>
    </Data>
    <Data>

    </Data>
    <Data>C:\MyApp.exe</Data>
    <Data>
    </Data>

    <Data>
    </Data>
  </EventData>
</Event>

【问题讨论】:

  • 你在Vista机器上安装了正确的VC90 CRT吗?
  • @James McNellis,不。这是否意味着用户还必须在他们的 Vista 机器上安装 VC90 CRT 才能运行我的应用程序?
  • @Subhen,答案是肯定的。见stackoverflow.com/questions/203195/…
  • @James McNellis,它有效,应该回答
  • @Subhen:这并不意味着您必须在所有 Vista 机器上安装 VC90 CRT。您有 2 个选项:静态链接运行时,使用私有程序集(只需将清单和 crt 文件复制到您的应用程序目录)。

标签: c++ windows mfc windows-vista side-by-side


【解决方案1】:

目标计算机上没有 CRT 运行时 DLL。为避免这种情况,您可以安装 VC9 可再发行组件,也可以将程序与运行时静态链接 (more info)。 This question 也会有所帮助。

【讨论】:

  • 您也可以使用私有程序集,例如在您的应用程序目录下,可以有一个名为“Microsoft.VC90.CRT”的目录,其中包含运行时 DLL。该应用程序将自动找到它们。如果需要在没有可用安装权限的情况下分发应用程序并节省安装整个 CRT,这将非常有用。见stackoverflow.com/questions/787216
  • 要解决私有程序集的问题,请阅读这篇出色的文章 - buffered.io/posts/resolving-side-by-side-configuration-issues
【解决方案2】:

我意识到这是一个旧线程,但我遇到了同样的错误,并且没有一个 SO 线程引用了我遇到的问题的原因。 我使用了 sxstrace 程序,它把我指向了 XML 存在语法问题的配置文件!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 2010-11-02
    • 1970-01-01
    • 2015-02-08
    • 2021-12-22
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多