完整错误信息:“System.IO.FileNotFoundException”类型的未经处理的异常在 未知模块 中发生
未能加载文件或程序集“UTFS.Core.dll”或它的某一个依赖项。找不到指定的模块。
相信大家都碰到过类似的错误,一般出现这个问题原因就是xxx.dll找不到,或者xxx.dll的依赖项找不到
这是在VS中在运行多项目的时候,发生的一个错误
简单来说就是有一个C#项目,并列有一个C++ 项目,C++项目会生成一个xxx.dll文件,然后C#引用xxx.dll
问题是xxx.dll已经成功生成,而且我明明引用了xxx.dll,为什么还会报错呢?
甚至我已经把xxx.dll直接拷贝到C#项目的bin目录下了,还是依旧报错。。。
原因就是生成事件(Post-Build-Event)里面把两个项目的输出目录指定到了另一个地方
选择项目-->右键-->属性--->Build Events--->Post-Build-Event -->Command Line中有这样一句话:
copy "$(TargetPath)" "$(SolutionDir)\UTFS.BuildTarget\" /y
c++项目右键如图:
C#项目右键如图:
意思就是把生成的文件拷贝到项目目录下的Ctp.BuildTarget目录下,
打开项目目录一看,果然有这个目录,而且下面有C#的.exe和C++的dll,lib文件。。。
所以在bin目录下自然就找不到xxx.dll了,因为xxx.dll虽然被拷贝过去了,但是xxx.dll还是依赖了别的lib,dll,所以报错
解决方法:
选择C#项目-->右键-->属性--->调试
在调试窗口,选择启动外部调试,然后选择对应的程序目录即可
本次启动项是C#项目,所以上面的方法即可,如果是C++是启动项也是同理
项目右键--->属性--->Configuration Propertis-->Debugging-->Command一栏中写入:要调试的程序路径,一般为exe的路径