求助大神,c#dll调用问题,详细信息看下面

写了个程序和仪器通讯的,但需要调用厂商提供的3个dll,在我写的程序中,已经引用了一个dll,假设它叫a.dll,但是程序运行时a需要调用b.dll和c.dll中的方法进行计算,a/b/c都是厂商封装好的,我看不到,而且我用的话只需要引入a(厂商的参考例子就是这么写的,跑起来也没问题),但是我运行的时候显示找不到b。

Detail:

     Additionalinformation: 未能加载文件或程序集“c, Version=8.9.35.246,Culture=neutral, PublicKeyToken=18cbae0f9955702a”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

错误类型:

  System.IO.FileloadException

我觉得,只引入a的话,那么a找b和c肯定是通过配置文件或者其他方式来获取路径,要是那样的话,怎么写呢

大神帮忙,小弟搞了好几天了,现在数据还读不出来

  • 1.是不是dotnet framework的版本不一致
  • 2.用ilspy确定依赖关系,确定版本和Token
  • 3.确定三个dll在执行时在同一个目录

添加引用b.dll,错误描述就是这么提示的。估计是你调用的a.dll,里面用到了b.dll的方法。

三个文件都要放进来,都引用下

将所有的dll都引入到解决方案

a,b,c三个放到一个目录中看能否加载。主要就是让他们能找到对方。

你把这三个都添加引用到程序中。设置这三个程序集的属性,就好了。

1.程序中只需要引用a.dll
2.将b.dll和c.dll放入a.dll的同一个目录
3.将abc这三个dll都放入windows的system32目录;

不行请密我。

楼上LogicTeamLeader正解!

不管怎么样,谢谢各位的方法