标签:未处理的filenotfoundexce d层加载失败
在做机房的时候时长会遇到这样的问题下下图这样的问题,其实是加载不了D层,在解决问题的时候也查到了很多。
首先来了解一下咱们程序的文件夹是干嘛的,每一层的文件夹打开都包括bin和obj文件夹。
bin是binary的缩写,中文意为二进制的意思。就是说此文件夹下是最终生成二进制可执行文件。
在VS中做的机房的每一层都会编译生成一个DLL,DLL即可执行文件也可以理解为程序集。
obj是object的缩写,用于存放编写过程生成的临时文件。
如下是机房重构的结构图:
那么在各层的bin/Debug文件夹都有什么样的DLL呢?
U中 : BLL、DAL、Entity、Faced、factory、IDAL
Faced中:Faced、BLL、Entity、 Factory 、 IDAL
BLL中:BLL、 Entity、 Factory、 IDAL
Factory中:Factory、Entity、IDAL
IDAL中:Entity、IDAL
当在VS中添加了引用之后在相应的bin文件加下会有添加的直接引用和间接引用的dll,例如在U层中我们只添加了对B层、Entity层、Faced层中的引用所以再U层的bin下会有这三个的dll,但是在bin文件夹下同时会有IDAL和Factory的dll,后两个就是间接引用添加的。
同时我们会发现只有在U层中有DAL其他的层都没有,这说明DAL在U层中不是通过间接引用添加的,而且DAL层是对IDAL层的实现没有任何一层引用D层,所以再其它层中都没有DAL层,而U层中之所以有DAL是因为VS中DAL层的输出路径是U层的bin/Debug。而且D层的输出路径也必须是U层,否则就会提示如上的错误。
因为在重构的机房中我们把U层设置为启动项,所以在运行程序时就会从U层启动而且会从U层寻找各层的dll。如果D层的输出路径不是U层的bin/Debug文件夹,又因为没有任何层对D层引用,这样在U层中就找不到DAL层的dll就会报错。
防止这样错误的方法就是将D层的输出路径设置为U层的bin/Debug文件夹就可以了。
程序D层丢了——深入理解“未处理的FileNotFoundException”
标签:未处理的filenotfoundexce d层加载失败
原文地址:http://blog.csdn.net/yxflovegs2012/article/details/42780527