我的应用程序编译得很好,但是我遇到了以下运行时错误:
System.IO.FileNotFoundException was unhandled
HResult=-2147024770
Message=Could not load file or assembly {Wrapper} or one of its dependencies. The specified module could not be found.
在调用应用程序中对 Wrapper 的引用看起来是正确的。Wrapper dll 存在于正确的位置。
这个项目曾经能够在别人的系统上构建和运行,我看过几次演示。那个人/电脑现在已不可用。自上次成功构建和运行以来,一些依赖项的路径发生了变化,我已经修复了所有与此相关的编译错误。
只想澄清一下我的项目结构:
Digraph G
{
App [ label = "My C# Application"]
Wrapper [ label = "C++/CLI Wrapper"]
Lib [ label = "C++ Library"]
Dll [ label = "My helper C# DLL"]
CDep [ label = "Series of deep C++ dependencies managed \n by CMake for Lib, hard coded relative paths for Wrapper."]
App->Wrapper->Lib->CDep;
App->Dll->Wrapper->CDep;
}
Wrapper是一个C++库的C++/CLI封装。 当我们试图在应用程序中加载具有对Wrapper的using语句的类时,就会触发此错误。
Wrapper确实有很多依赖项,但错误消息并没有指出哪个依赖项存在问题。 这是一个庞大而复杂的系统,其中大部分由其他团队构建。 C++组件使用CMake获取所有正确的依赖项,但CMake不支持C#原生。
我尝试使用fuslogvw查找绑定错误,但除非我改变设置以包括所有绑定,否则它什么也没显示给我,然后它只显示成功绑定。 http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.100).aspx
路径很长,但不超过256个字符。
我的Dll编译收到了警告(请参见上面的图表): Warning 1 在被构建的项目“MSIL”和引用“{cli_wrapper.dll}”之间存在处理器体系结构不匹配,“AMD64”。 此不匹配可能导致运行时故障。 请考虑通过配置管理器更改项目的目标处理器体系结构,以使项目和引用之间的处理器体系结构对齐,或者依赖于具有与项目的目标处理器体系结构匹配的处理器架构的引用。
在配置管理器中,Dll正在构建“Any CPU”平台,而Wrapper正在构建为“x64”。 我已将dll更改为x64。 我仍然遇到了运行时错误。
无法加载文件或程序集或其某个依赖项进行了清理,删除了构建目录内容。 没有变化。 重新打开Visual Studio。 没有变化。 尝试更改程序集名称、默认命名空间和项目名称以匹配。 没有变化。
无法加载文件或程序集'xxx'或其某个依赖项。 尝试使用不正确的格式加载程序 我认为我们必须编译为64位。 我们依赖于一个64位的C++库。
无法加载文件或程序集 ... 参数不正确 我是本地管理员。
如何在.NET中启用程序集绑定失败日志记录(Fusion) 尝试了注册表设置,但它们似乎只是fuslogvw设置。 可用的日志数据没有改善。
许多其他类似的问题都有针对ASP或服务安装的具体答案。