未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件
【发现问题】
【分析问题】
1.代码出现在哪里?
这个是在抽象工厂+反射在Factory层中出现的一个问题
2.代码的意思?
IUser = CType(Assembly.Load(AssemblyName).CreateInstance(classname), ILoginUser)
IUser = CType(Assembly.Load(程序集名称).CreateInstance(命名空间下的类), 接口)
抽象工厂类目的就是能够达到更换数据库而不用动用其它代码的目的,这实际上就是一个选择SQL数据库的DLL还是其它数据库的DLL档
这句话的意思就是返回一个dll来实现接口ILoginUser
3.出现错误的原因?
事实上VB.NET编程之后点执行调试都是会生成dll档,但真正执行的时候是执行dll档,这个错误就是在调用D层时候找不到dll档的错误
【解决问题】
调整D层生成DLL的路径到UI的bin文件夹中
方法一:
打开U层根文件夹下的bin\Debug
将下图3个文件复制到UI层的bin\Debug中
方法二:
右击DAL的属性——编译——生成输出路径(选择UI层对应的bin\Debug路径)
【扩展知识】
1.程序集:
物理划分
是我们写代码之后生成的DLL档,是部署用的,多个DLL能够部署在几台或多
台电脑上
2.命名空间:
逻辑划分
命名空间是开发者对类逻辑上的划分,方便开发,分给一个人命名空间,一下都是他来做
3.bin文件
bin文件在.NET的开发是自动生成的,它是在运行后将你的代码自动生成DLL文件,将DLL文件存放在bin中,bin也是.NET开发环境的程序运行库,可以是内部的DLL文件,也可以是外部的DLL文件
bin文件下有Debug和Release两个文件夹,
Debug模式下生成的程序集为调试版本,未经优化,在bin\Debug\目录中,除了要生成.exe或.dll文件外,还有个.pdb文件(记录代码中断点等调试信息)
Release模式下不包含调试信息,并对代码进行了优化,bin\release\目录下只有一个.exe或.dll文件
又关详细信息请见:.NET中Debug模式与Release模式
【总结】
发现自己越来越喜欢错误了,在错误中能学到很多的东西,在错误中成长还是很开心的。