VS未能加载文件或程序集“xxx.dll” 设置Build Events

完整错误信息:“System.IO.FileNotFoundException”类型的未经处理的异常在 未知模块 中发生
未能加载文件或程序集“Ctp.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)\Ctp.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的路径

 

 

 

posted @ 2018-11-22 13:06  birdhumen鸟人  阅读(842)  评论(0编辑  收藏  举报