我的 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.
环顾四周后,我发现了使用Assembly Binding Log Viewer或Process Monitor的建议。两者都没有或没有产生任何信息(也就是说,日志查看器根本没有显示任何内容,并且进程查看器没有看到正在尝试加载程序集。
我终于遇到了一个建议,使用这个实用程序(dependency 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 框架有关;但是,此应用程序是在 .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).
我设法减少了有问题的库,直到它只是一个返回字符串的静态函数,并且仍然得到错误。