首页 > 代码库 > 未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件。

未能加载文件或程序集“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层的根目录下的bin\Debug如图





打开dll的属性


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





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





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


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



———————————chenchen好久没写博客了…………最近很忙啊———————————