未能载入文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件。


这个一般出如今三层给B层与D层之间加抽象工厂-接口-映射、时候出的错、出错的地方是抽象工厂。


——如图





咱们先理解一下这个类和这句话的意思


 类

        抽象工厂类目的就是能够达到可更换数据库而不用动其它代码的目的、这事实上就是一个选择类、是选择SQL数据库的DLL还是其它数据库的DLL档、这里我就不再说抽象工厂和接口映射具体解释了


语句

这个类简单的就一句话

Return CType(Assembly.Load("DAL").CreateInstance("DAL.DGetDataTable"), IIfDBselect)

        这句话大概意思就是返回一个dll来实现接口IIfDBselect、中间的是dll程序集名称和命名空间下的类(实现接口的那个类)例如以下

Return CType(Assembly.Load("程序集名称").CreateInstance("命名空间下的类"), 接口)


程序集和命名空间的差别


        程序集就是物理划分

                程序集事实上就是我们写代码之后生成的DLL档、是部署用的、多个DLL能够部署在几台或多台电脑上


        命名空间就是逻辑划分

                命名空间是开发者对类逻辑上的划分、方便开发、分给一个人命名空间、以下就都是他来做。


错误

        未能载入文件或程序集“DAL”或它的某一个依赖项。

系统找不到指定的文件。

        事实上就是找不到文件里D层的DLL文件了。


原因

        事实上咱们VB.NET编程之后点执行调试都是会生成dll档、真正执行的时候是执行的DLL档、这个错误事实上就是在调用D层时候找不到dll档的错误。



解决方法


打开U层的根文件夹下的binDebug如图





打开dll的属性


1 核对命名空间与程序集名字是否一样





 2  改动dll生成的路径(由于在U层的Debugxi下没D层的dll档、改下路径使生成的时候生成在U层里·-由于咱们的dll都是在U层引用的)





我这里U层的名字叫机房收费系统1.0希望不要误导大家


这个问题弄了半天、一開始以为是代码的原因……后俩查了查才慢慢了解、写出博客与大家分享、共同进步吧!



———————————chenchen好久没写博客了…………近期非常忙啊———————————



原文地址:https://www.cnblogs.com/zfyouxi/p/5247178.html