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

三层学习就是一个渐渐深化学习的过程,先是按着视频敲了一遍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文件名称是否一致,不一致就会未能加载文件或者程序集的问题。


【小结】

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

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...