应用程序无法启动,因为它的并排配置不正确
Posted
技术标签:
【中文标题】应用程序无法启动,因为它的并排配置不正确【英文标题】:The application has failed to start because its side-by-side configuration is incorrect 【发布时间】:2011-04-27 01:54:52 【问题描述】:未处理的异常:System.IO.FileLoadException:无法加载文件 或组装 'TheLibrary, Version=1.2.3905.36284, Culture=neutral, PublicKeyToken=14 04827c3a8f2601' 或其依赖项之一。 该 应用程序无法启动,因为它的并排配置 不正确。请参阅应用程序事件日志了解更多详细信息。 (HRESULT 例外:0x800736B1)文件名:'TheLibrary, 版本=1.2.3905.36284,文化=中性,PublicKe yToken=1404827c3a8f2601' ---> System.Runtime.InteropServices.COMException (0x800 736B1): 应用程序无法启动,因为它的并排配置 on 不正确。请参阅应用程序事件日志以获取更多详细信息。 (HRESULT 的异常:0x800736B1)
当我查看事件日志时,我得到了这个错误。
激活上下文生成失败 “C:\project\Debug\MyLibrary.dll”。从属程序集 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" 找不到。详细诊断请使用sxstrace.exe。
我使用sxstrace
记录错误,结果如下:
================= 开始生成激活上下文。输入参数:Flags = 0 ProcessorArchitecture = x86 CultureFallBacks = en-US;en ManifestPath = C:\Windows\system32\cmd.exe AssemblyDirectory = C:\Windows\system32\ 应用程序配置文件 = ----------------- 信息:解析清单文件 C:\Windows\system32\cmd.exe。信息:清单定义身份是 Microsoft.Windows.FileSystem.CMD,processorArchitecture="x86",type="win32",version="5.1.0.0"。 信息:激活上下文生成成功。结束激活上下文 一代。
================= 开始生成激活上下文。输入参数:Flags = 0 ProcessorArchitecture = x86 CultureFallBacks = en-US;en ManifestPath = C:\Debug\TheLibrary.dll AssemblyDirectory = C:\Debug\ 应用程序配置文件 = ----------------- 信息:解析清单文件 C:\Debug\TheLibrary.dll。信息:清单定义标识为(空)。信息:参考: Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" INFO:解析参考 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。 信息:正在解析 ProcessorArchitecture x86 的参考。信息: 解决文化中性的参考。信息:应用绑定 政策。 信息:未找到发布者政策。 信息:未找到绑定策略重定向。信息:开始装配探测。 信息:未在 WinSxS 中找到程序集。 信息:尝试在 C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL 处探测清单。 信息:尝试在 C:\Debug\Microsoft.VC90.DebugCRT.DLL 处探测清单。 信息:尝试在 C:\Debug\Microsoft.VC90.DebugCRT.MANIFEST 探测清单。 信息:尝试在 C:\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL 处探测清单。 信息:尝试在 C:\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST 探测清单。 信息:未找到文化中性的清单。信息:末端装配探测。错误:无法解析参考 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。 错误:激活上下文生成失败。结束激活上下文 一代。
无法解析引用Microsoft.VC90.DebugCRT,processorArchitecture=...
有什么想法吗?
【问题讨论】:
程序是用 VS 2008 构建的,我安装了 Microsoft Visual C++ 2008 Redistributable Package (x86)。但仍然没有帮助。 对于从 Google 到这里的非程序员,如果您在 Windows 完成启动之前启动程序,有时会发生此错误。如果您等待几秒钟并尝试再次启动该程序,那么之后它通常会正常工作。 【参考方案1】:我们刚刚遇到了这个完全相同的错误,但与错误相比,其原因非常具有误导性,希望值得在这里添加,因为它在谷歌上名列前茅...
启动 Windows 服务时出现“应用程序无法启动,因为它的并排配置不正确”错误。在我们的例子中,这是由于服务 application.config xml 文件无效 - 有人手动编辑它并粘贴在一个额外的结束标记中。修改这个解决了“不以任何方式相关”的错误消息。
检查这一点的最快方法是将 xml 文件粘贴到网络上许多免费的在线 xml 验证器之一。
【讨论】:
你是救生员。这正是我们案例的问题所在。 如果不是因为这个,我永远不会想到查看配置文件。显然我有一个不正确的双“ 这也是我的情况:app.config 文件无效 这个错误今天也发生在我身上。对于正在运行的基于 .NET 的 Windows 服务,它是一个无效的 exe.config 文件。具体来说,其中一个设置(密码)中有一个 & 符号,这在技术上是无效的 XML,因此必须使用&
对其进行转义。我发现了问题,因为 Windows 事件日志实际上表明配置文件的格式不正确并指向行号。我一看到 & 我就捂脸。
@JeffMergler - 哇,事件日志消息很有帮助!终于有进步了! :)【参考方案2】:
无法找到依赖程序集 Microsoft.VC90.DebugCRT,...
是的,只能在安装了 Visual Studio 的计算机上找到。 DebugCRT 不可分发。而且编写 C 或 C++ 代码并为其部署调试版本是没有意义的,它会慢很多。
部署您的 DLL 的发布版本。还有 VC++ 库,安装项目的先决条件中的复选框之一。
【讨论】:
我没有程序集的源代码,请问有什么方法可以在不安装visual studio 2008的情况下获取Microsoft.VC90.DebugCRT? “编写 C 或 C++ 代码并为其部署调试版本没有意义” - 强烈反对这一点,例如在您的机器上部署虚拟机时很有意义. 叹气,遵循 MSDN 指南,了解如何设置远程调试会话。这与部署无关。【参考方案3】:这被标记为 C#,所以我将给出 C# 答案:某些东西损坏了您的 projectname.exe.config 文件。
在文本编辑器中将其拉起,很可能某些内容无法正确关闭,或者最后会有一些垃圾字符。你可以弄清楚为什么会发生这种情况。但现在,只需修复它,您就可以启动了。
【讨论】:
我必须在 Notepad++ 中激活“查看所有字符”选项才能在 .config 文件的末尾看到这些垃圾字符。 这里遇到了类似的问题,发现我手动编辑了.config文件来更改跟踪条目,并在其中留下了结束注释。【参考方案4】:您可以从应用程序路径中删除清单文件,然后可执行文件将正常工作,
【讨论】:
就我而言,我的清单文件中有一个错误,我对其进行了编辑,它解决了我的问题,感谢您的提示。 为什么要删除清单而不是解决根本原因?特别是如果您需要该文件和/或手动编辑后发生问题。【参考方案5】:用于实际检查您是否使用的是 Windows 7(8 和 Vista 必须相同)
从控制面板系统管理工具打开并选择事件查看器
点击windows日志->应用
在列下并排查找您的错误日志
记下发生错误的行号。
然后使用诸如 write 或 notepad 之类的编辑器打开 yourfilename.exe.manifest
然后从行号</ to />
删除行并保存文件
您的问题已解决。
【讨论】:
【参考方案6】:我发现并排错误 app.config 文件中存在不匹配或系统错误。在您的 app.config 文件中找到错误,更正它。
【讨论】:
这是我的问题。【参考方案7】:我想指出可能出现此错误的另一个原因:*.config
文件的错误编码。
该文件需要在UTF-8
中,而现在您实际上可以通过使用notepad.exe
手动创建配置文件来意外获得ANSI
。
【讨论】:
【参考方案8】:我遇到了这个问题,这是 app.manifest 文件的 assemblyIdentity
元素中的 version
值的一个简单问题。显然 version
必须包含所有四个数字(除非 assemblyIdentity
被忽略,如果嵌入清单就是这种情况)。
所以这里的修复:
<assemblyIdentity name="MyApplication" version="1.0.1" publicKeyToken="D3567E058552E2DF" type="win32" processorArchitecture="x86" />
是设置
version="1.0.1.0"
在那之后,一切都变得很糟糕。
【讨论】:
【参考方案9】:确保您没有错误的配置,例如 http Web 服务绑定中的 <httpsTransport>
。
【讨论】:
【参考方案10】:在我的例子中,我使用的是用 c# 构建的控制台应用程序,并且我使用的是 VS 2017。我尝试通过右键单击项目并选择发布选项来发布代码,然后配置所需的设置。它没有在配置的路径上发布 exe,但是每当我尝试编译或尝试构建应用程序时,我都会遇到这种错误。我在谷歌上搜索那个错误信息,我遇到了这个问题。这个答案似乎与问题无关,但我仍然为像我这样因为面临像我这样的问题而来到这里的人发布我的答案。所以我发现我的问题的称呼如下:
-
转到项目文件,右键单击它
转到属性选项
转到签名选项
取消选中名为“签署 ClickOnce 清单”的复选框
完成。现在,当我尝试再次构建控制台应用程序时,它向我显示了一条警告消息,我忽略了它,它已成功构建,并且工作正常。我已经分享了我尝试过的一切,试图在这里为像我这样的人提供帮助。谢谢
【讨论】:
【参考方案11】:这通常是App.config 文件中的错误。
有时您只是放置了一个无效的标签,或者您的 XML 格式无效。
尝试使用一些 XML 在线验证器检查 XML。
关于允许的标签,你可以在这里找到更多:
https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/
如果您的 App.config 文件中的某些内容没有出现在文档中,那么它可能应该放在配置的另一部分。例如,在 app.manifest 文件中。您甚至可以搜索新添加的代码,例如一些标签或属性,并通过比较您拥有的代码与搜索结果的对齐方式来找出错误。这是意外切换文件或错误输入标签的常见错误。
【讨论】:
以上是关于应用程序无法启动,因为它的并排配置不正确的主要内容,如果未能解决你的问题,请参考以下文章
TortoiseProc Launch failed: 应用程序无法启动,因为它的并排配置不正确
应用程序无法启动并行配置不正确,小编教你应用程序无法启动并行配置不正确该怎么解决