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

时间:2010-10-18 17:37:57

标签: c# .net configuration dependencies

未处理的异常:System.IO.FileLoadException:无法加载文件或组件 y' 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):应用程序无法启动,因为它的并排配置 是不正确的。有关详细信息,请参阅应用程序事件日志。 (抗辩 n来自HRESULT:0x800736B1)

当我查看事件日志时,我收到此错误。

“C:\ project \ Debug \ MyLibrary.dll”的激活上下文生成失败。无法找到依赖程序集Microsoft.VC90.DebugCRT,processorArchitecture =“x86”,publicKeyToken =“1fc8b3b9a1e18e3b”,type =“win32”,version =“9.0.21022.8”。请使用sxstrace.exe进行详细诊断。

我使用sxstrace记录错误,结果如下:

================= 开始激活上下文生成。 输入参数:  标志= 0  ProcessorArchitecture = x86  CultureFallBacks = en-US; en  ManifestPath = C:\ Windows \ system32 \ cmd.exe  AssemblyDirectory = C:\ Windows \ system32 \

应用程序配置文件=

信息:解析清单文件C:\ Windows \ system32 \ cmd.exe。  INFO:Manifest Definition Identity是Microsoft.Windows.FileSystem.CMD,processorArchitecture =“x86”,type =“win32”,version =“5.1.0.0”。 信息:激活上下文生成成功。 结束激活上下文生成。

================= 开始激活上下文生成。 输入参数:  标志= 0  ProcessorArchitecture = x86  CultureFallBacks = en-US; en  ManifestPath = C:\ Debug \ TheLibrary.dll  AssemblyDirectory = C:\ Debug \

应用程序配置文件=

信息:解析清单文件C:\ Debug \ TheLibrary.dll。  信息:清单定义标识是(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 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 = ...

任何想法?

9 个答案:

答案 0 :(得分:19)

我们刚刚遇到了同样的错误,但原因是错误的,相比之下错误值得加入,因为它在Google上排名第一...

"应用程序无法启动,因为它的并排配置不正确" 启动Windows服务时发生错误。在我们的实例中,这是由服务application.config xml文件无效引起的 - 有人手动编辑它并粘贴在额外的结束标记中。修改这个解决了"没有任何关系"错误信息。

检查此问题的最快方法是将xml文件粘贴到网络上免费提供的许多在线xml验证器中。

答案 1 :(得分:17)

  

无法找到依赖程序集Microsoft.VC90.DebugCRT,...

是的,只能在安装了Visual Studio的计算机上找到。 DebugCRT不可分发。编写C或C ++代码并为其部署调试版本没有意义,它是 lot 更慢。

部署DLL的Release版本。以及VC ++库,它是安装项目先决条件中的复选框之一。

答案 2 :(得分:4)

您只需从应用程序路径中删除清单文件,然后可执行文件即可正常运行,

答案 3 :(得分:4)

这是标记为C#,因此我将给出C#答案:某些东西已经破坏了你的projectname.exe.config文件。

在文本编辑器中将其拉出来,很有可能无法正常关闭或者最后会有一些垃圾字符。你可以弄清楚为什么会发生这种情况。但就目前而言,只需修复它,您就可以启动了。

答案 4 :(得分:3)

要真实检查您是否使用Windows 7(对于8和Vista必须相同)

从控制面板系统打开管理工具并选择事件查看器

点击Windows日志 - >应用

在并排的列下找到您的错误日志

请注意发生错误的行号。

然后使用编辑器如写或记事本打开yourfilename.exe.manifest

然后从行号</ to />删除行并保存文件

您的问题已解决。

答案 5 :(得分:2)

我发现并排错误,app.config文件中存在不匹配或系统错误。找到你的app.config文件中的错误。

答案 6 :(得分:1)

我想再次指出可能出现此错误的另一个原因:*.config文件的编码错误。

该文件必须位于UTF-8,而您现在可以通过使用ANSI手动创建配置文件来意外获取notepad.exe

答案 7 :(得分:0)

确保您没有错误配置,例如http网络服务绑定中的<httpsTransport>

答案 8 :(得分:0)

我遇到了这个问题,这是app.manifest文件的version元素中assemblyIdentity值的一个简单问题。显然version必须包含所有四个数字(除非忽略assemblyIdentity,否则嵌入清单就是这种情况。)

所以修复此处:

<assemblyIdentity name="MyApplication" version="1.0.1" publicKeyToken="D3567E058552E2DF" type="win32" processorArchitecture="x86" />

是设置

version="1.0.1.0"

在那之后,一切都很笨拙。