也是最近做多人开发,在CLR中调用别人的dll时出现的问题,dll已经引用了,加载路径也是正确的,确定dll一定存在,甚至还一度怀疑是不是我引用的有问题,特意使用using命令去引用了dll的绝对路径,且编译时没有报错,但运行时间就是会报这种错。
搜了很多文章,各种调试未果,最终还是靠自己发现了问题。
CLR不会无缘无故报找不到文件,就算真的确定dll存在且路径正确,也有可能由于其内部加载函数逻辑问题而导致找不到dll文件。
这里是因为对于外部dll,CLR不会去你的引用路径找dll,而是会在运行目录下查找。VS里的所有引用都是编译时命令,就算使用using命令强行去找它的绝对路径也是不可行的。
因此只要将引用的dll复制到运行目录下就行了,也就是debug或release的目录下。
另外啊,如果你的外部dll是x64生成的,那么调用这个dll的项目也必须采用x64,必须使用相同的位数,否则会产生编译时错误。这里AnyCPU最好不要用,这个选项非常的迷。