在重构机房的过程中用到了抽象工厂+反射+配置文件对B层和D层解耦,在运行时出现了一个问题:“未能加载文件或程序集‘DAL’或它的某一个依赖项。系统找不到指定的文件”。重新检查了一遍工厂类和D层中的代码,发现代码没有问题,通过上网查解决方案,知道了问题出现的原因,原来是在U层中没有找到关于D层的DLL文件。
大家都知道.Net程序的运行机制是在启动层的bin文件下的dubug里面必须包含其他程序集生成的DLL文件,程序在运行时会直接在启动的这一层里面直接调用所需要的DLL文件。上述问题由于在U层的bin文件下缺少D层的DLL文件才会出现的。
这个问题的解决方案有两种:
1、将D层中生成的DLL文件手动地添加到U层的bin文件中的dubug文件夹里面,不过这样只能解决当前的问题,后期还要做大量的添加工作。
2、调整D层中DLL的生成路径。找到当前程序集,右击属性,在编译中将生成输出路径改为U层文件下的bin文件中的dubug文件下就可以了。
总结
关于这一部分的问题也涉及到.Net中的反射机制的原理,关于对“反射”的认识会在之后的文章中介绍,请大家敬请期待哈!