C# 三层级架构问题之 能加载文件或程序集或它的某一个依赖项。系统找不到指定的文件

用抽象工厂加反射来确定调用哪一个D层的时候,出现了错误“未能加载文件或程序集或它的某一个依赖项。系统找不到指定的文件”

如下图所示:

C# 三层级架构问题之 能加载文件或程序集或它的某一个依赖项。系统找不到指定的文件

 

出现这种错误有两种情况:

1.      DLL的文件名写错了

2.      DLL不存在

我检查了自己的DLL命名,确实没问题。而且我的DLL也是存在的。那么到底是哪里错了呢?

原来是因为我UI层里面没有这个D层的DLL。通过参考社和师哥的博客知道反射一切是以UI层的bin文件夹下的DLL名称为中心。.net的默认机制就是从U层的bin里面去找对应的DLL,我的生成在了D层的bin目录下,当然找不到了。这个问题在编译的时候是不会报错的,在运行的时候就会显现出来。

解决办法就是修改DAL的生成目录为UI/bin里面就可以了

查看UI下

C# 三层级架构问题之 能加载文件或程序集或它的某一个依赖项。系统找不到指定的文件

将MySqlDAL的dll输出到UI下

在该类库项目右键,属性即可:

C# 三层级架构问题之 能加载文件或程序集或它的某一个依赖项。系统找不到指定的文件

最后运行,OK!