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

本文介绍了一个关于抽象工厂模式结合反射机制在Factory层中遇到的问题,具体表现为无法找到DLL文件导致的运行错误。文章分析了问题原因并提供了两种解决方案:一是手动复制必要的DLL文件到UI层的binDebug目录;二是通过调整DAL层项目的输出路径指向UI层的binDebug目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【发现问题】



【分析问题】


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模式


【总结】


发现自己越来越喜欢错误了,在错误中能学到很多的东西,在错误中成长还是很开心的。


评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值