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

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

        【知识点】

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

                                      

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

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

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

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

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

        解决方法:

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

                                           

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

                                              三层问题—“系统找不到指定的文件”_第1张图片

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

                   

        【小结】

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


你可能感兴趣的:(debug,博客,VB.NET)