码迷,mamicode.com
首页 > 其他好文 > 详细

程序D层丢了——深入理解“未处理的FileNotFoundException”

时间:2015-01-16 20:59:25      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:未处理的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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!