微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

三层问题—“系统找不到指定的文件”

三层学习就是一个渐渐深化学习的过程,先是按着视频敲了一遍c#版的三层登录窗体,又将其转换成了vb.net版的,后来看大家都将三层优化成七层。所以在巨人的肩膀上又开始将三层优化成七层,感觉一切准备就绪一运行,却出现问题了。

【知识点】

问题:“未能加载文件或程序集“LoginDAL”或它的某一个依赖项。系统找不到指定的文件。"


开始以为是代码或者配置文件时出了问题,但是调试了一会儿感觉也没什么问题,但就是运行不了。这时只能求助强大的度娘了,果然一查很多类似的问题。人家说很明显是缺少dll文件呗!我怎么就看不出来呢,看来需要学习的还有很多。

出现这种问题的原因可能有:

a.dll文件根本不存在,即dll文件丢失了

b.dll文件名和加载时dll文件名不一致

c.dll文件存在,但是加载路径错误

解决方法

a.查看dll文件是否存在,先找到实例文件目录,打开”LoginDAL"——“bin"——”Debug“,看一下”Debug“文件夹中是否有该层的dll文件,如图:


我的之所以运行不出来就是因为缺少dll文件,度娘说在程序运行的过程中会自动生成每一层的dll文件,我就运行了一下但是还是没有。所以我就把D层删了,重新建了一遍,在运行就出现了,问题就解决了。


b.dll文件名和加载时dll文件名不一致,在LoginFactory也就是工厂层中用到了在Assembly.Load()方法Assembly.Load("LoginDAL").CreateInstance("LoginDAL.UserADO"),就是在LoginDAL.dll程序集中查找LoginDAL.UserADO类。Assembly.Load("程序集").CreateInstance("命名空间.类"),这里要查看LoginDAL层的属性——应用程序中的程序集名称和命名空间是否和Assembly.Load()方法中加载的一致。还有要确认程序集名称和命名空间与bin文件夹下的dll文件名称是否一致,不一致就会未能加载文件或者程序集的问题。


【小结】

还有很多类似的问题和解决方法,在问题中不断成长吧!在学习三层的过程中,开始不理解三层之间的关系,各层的数据是怎么传递的,随着学习的深入慢慢理解了一些。降低层与层之间的依赖,各层各司其职,好处多多。当然也有它的不足之处,在机房重构的路上继续深化三层学习。

原文地址:https://www.jb51.cc/vb/257576.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐