当前位置: 首页 > 知识库问答 >
问题:

运行时错误:无法加载文件或程序集-找到具有不同CPU类型的模块

严柏
2023-03-14

我的WCF服务中出现以下运行时错误。

Could not load file or assembly 'MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

环顾四周之后,我发现了一个使用程序集绑定日志查看器或进程监视器的建议。两者都没有或都没有产生任何信息(即,日志查看器根本没有显示任何信息,流程查看器也没有看到正在尝试的程序集加载)。

最后,我遇到了一个建议,使用这个实用程序(依赖项walker)来找出程序集实际上在寻找什么。一开始,我就犯了一个错误;日志说明如下:

错误:找到具有不同CPU类型的模块。警告:未找到至少一个延迟加载依赖项模块。警告:由于延迟负载相关模块中缺少导出功能,至少有一个模块具有未解析的导入。

Error: Modules with different CPU types were found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

根据模块列表,它找不到这些:

API-MS-WIN-CORE-COM-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
DCOMP.DLL
IESHIMS.DLL

其中一些看起来像是与RT框架相关的;然而,这个应用程序是在1997年开发的。NET 3.5(实际上,严格来说这不是真的——它是在4.5开发的,降级为3.5)。

查看其中一些文件似乎意味着它们是相当核心的Windows文件,奇怪的是,我在解决方案的其他地方使用了这个dll(当然是在客户机上),没有任何问题。

我正在使用VS2013,虽然我已经尝试了VS2012和得到同样的问题。

我确实遇到了这个问题,乍一看似乎是相同的,尽管它与C有关。

有谁能给我一些关于问题可能是什么或下一步尝试什么的指导吗?

这是我的融合日志:

=== Pre-bind state information ===
LOG: DisplayName = MyAssembly.MyLib.XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, processorArchitecture=MSIL (Fully-specified)
LOG: Appbase = file:///c:/myprog/bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = myprog.exe
Calling assembly : System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\myprog\bin\Debug\myprog.exe.config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).

我设法减少了有问题的库,直到它只是一个返回字符串的静态函数,并且仍然得到错误。

共有3个答案

曾元忠
2023-03-14

如果您有多个项目,则在Visual Studio中运行应用程序时,其中一些项目可能没有生成。右键单击解决方案,然后转到属性、配置属性并确认所有项目都设置为编译。

郭琦
2023-03-14

带有WCF的Visual Studio有一个怪癖——如果您使用选定的平台构建,它会将程序集转储到特定于平台的文件夹中。如果你用“任何中央处理器”构建,它会把它放在你WCF的“宾”文件夹的根目录中。

当它配置IIS来帮助你的时候?它会自动假定程序集位于“宾”文件夹的根目录中。

净事件是,当您选择“x86”而不是“任何CPU”时,您最终将在错误的位置生成程序集,并且WCF突然无法运行。因此,这是少数几个无法加载文件或程序集的“一网打尽”错误说明了事实真相的情况之一—Visual Studio将程序集放在错误的位置,但现在找不到它。

我不知道他们为什么那样做。WCF有一些。。。有趣的设计决策。

冯风史
2023-03-14

总是帮助我解决这个错误的事情是仔细查看错误消息的一部分,其中说或它的一个依赖项

 类似资料:
  • 我的配置如下: Apache Maven 3.3.3(7994120775791599e205a5524ec3e0dfe41d4a06;2015-04-22T14:57:37 03:00) 我使用Spring Tool Suite 3.7.1。发布(构建ID:201510041213)。 我做了关于Java、Maven和STS的所有设置,但是当我试图运行任何Maven命令时,STS会抛出这个异常,

  • 我在创建工作JAR文件时遇到问题。我可以跑步。类文件如下所示: 但作为jar运行(在构建脚本中)失败: 我将通过使用简单的Hello World项目来简化我遇到的问题: 文件需要进入文件夹。JAR文件需要在文件夹中。是构建JAR文件的bash脚本。如下: 你好世界java: 运行JAR文件,如构建中所示。sh结果 如前所述,直接运行应用程序效果很好。 这是的结构。 的内容。 我已经工作了6年了,现

  • 我修改了我的ASP。NET MVC4包,现在<code>System.Web.WebPages。Razor v3无法加载。有时其他包也不会加载。 我的同事运行解决方案没有任何麻烦,所以问题肯定是我的开发系统上的配置(与任何已签入的内容相反)。 我已经在各种SOF和其他论坛链接中尝试了这些建议,包括: < li >无法加载文件或程序集系统。Web .网页. Razor,版本=2.0.0.0, < l

  • 这是我所做的编译: javac-cp“./javax.mail.jar”main.java 然后运行它: 这是我的完整代码: Edit:还尝试从父目录运行(其中包含my com文件夹和): java-cp“./javax.mail.jar;。Company.Main 但我明白了: 错误:找不到或加载main类Com.Company.main

  • 我得到了新的笔记本电脑(Windows7),我正在尝试设置Maven。

  • 我知道这是一个常见的问题,但我已经尝试了很多事情来使这起作用。 主类名:Test 我包含了带有属性的,如下所示: null 在我的部署简介中,我包括: lib目录 文件的组贡献者(,我正在使用的一个外部)的所有合并内容 注意:我使用的是JDeveloper12c IDE 无法运行jar文件:无法找到或加载主类Hello