DALFactory出现"未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件”的解决方案 .
自己在使用抽象工厂+配置文件+反射实现重构机房的过程中,遇到了这种情况,

当初自己认真的检查了反射中的代码,都是没有问题,请教了师姐,检查了抽象工厂与反射的使用都没有问题
// 查找我们将要使用的数据访问层
private static readonly string path = ConfigurationManager.AppSettings["WebDAL"]; private DataAccess() { }
//实现 CreateCategory 方法,用于创建Supplier类实例
public static IDAL.ISupplier CreateSupplier()
{
string className = path + ".Supplier";
//利用反射技术,动态加载指定类型
return (IDAL.ISupplier)Assembly.Load(path).CreateInstance(className);
}
后来在网上找到了类似的问题的解决方案解决了,提示很明显是缺少DLL,原因:
1:DLL文件名与加载时的DLL文件名不一致。
2:.DLL文件根本不存在,即出现丢失情况。
3.:加载DLL路径错误,即DLL文件存在,但加载路径不正确
我查了自己项目的情况:
文件名一致,在UI层没有查找到生成的关于D层的Dll文件,程序运行的机制是在启动层的bin文件夹下的debug里面必须得有别的程序集生成的dll文件,程序在运行时会直接在启动的这一层里面直接的调用所需要的dll文件,后来自己把有关的D层生成的dll手动添加了进去,在运行,没有错误了;但是这样还是不行的毕竟后期还需要做大量的工作,总不能每次都需要手动吧,后来才知道原来可以调整程序的生成路径:

这样对于这个问题就解决掉了,学习到很多知识:
反射的一个原则:一切皆以UI层的bin文件夹中的dll名称为中心。(原因很简单:.net类加载的机制就是默认从本程序集的bin文件中找,所以bin文件夹中一定要有要加载的程序集的dll)。UI层中bin文件夹中dll叫什么名字AssemblyPath就使用什么名字,bin内部类的全名叫什么,className就写成什么全名。.net中的引用:加入对某个程序集的引用就能在程序集有变化时自动拷贝dll。
发现问题:自己搜索的时候还是有些偏差,今后多多锻炼。
总结:遇见问题是很正常的,是自己不断前进的阶梯,踏踏实实的解决问题才是最重要的
后期对反射的思考与学习:
虽然抽象工厂模式是为解决数据库更换而设计的,但操作不同数据库到底有些什么不同目前尚不十分清楚,除了链接字符串上有区别,还知道Sql Server和Access等在ADO.NET上的使用是不同的,Sql Server用的是System.Data.SqlClient命名空间下的SqlConnection、SqlCommand、SqlParameter、SqlDataAdapter、SqlDataReader等,而Accesss数据库则是用的System.Data.OleDb命名空间下相应的类。此外可能对不同数据库进行操作时SQL语句有些不同吧?!
对现在正在设计的机房收费系统,如果不同数据库之间的SQL语句没区别,那么现在所写的继承数据表处理接口的数据表处理类就不必在更换数据库时被替换。也就是反射的应用就没有必要了,因为反射在这的作用就是动态的产生数据库处理类(根据条件产生处理Sql Server或其他数据库的处理类,而这些数据库处理类用的就是SQL语句)。
对这个模式应用的整体感觉是试着应用上了模式来解决数据库更换带来的问题,但究竟解决了没有,解决彻底否尚有很大疑问……
DALFactory出现"未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件”的解决方案 .的更多相关文章
- 能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件
能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件 http://blog.csdn.net/pplcheer/article/details/7796211 做项目总是遇到各种的问 ...
- 未能加载文件或程序集“DAL”或其他的某一个依赖项,系统找不到指定的文件
针对这个问题我在敲VB.NET机房收费系统的时候总共出现了两次,第一次是在使用反射+抽象工厂的时候出现的,第二次是在使用VS2012自带的打包工具生成可执行文件执行exe文件的时候出现的.具体看下图: ...
- 未能加载文件或程序集“AspNetPager”或它的某一个依赖项。参数错误(转)
未能加载文件或程序集“AspNetPager”或它的某一个依赖项.参数错误. 看你的的开发框架用的是多少的2.0, 3.0, 3.5, 4.0 那么删除的框架的文件夹也相对应的变化 删除 C:\W ...
- 目标平台、活动平台 配置,出现未能加载文件或程序集“xxx”或它的某一个依赖项报错
今天在做动态加载程序集的时候,发现明明程序集存在的情况下,还是依然报“未能加载文件或程序集“xxx”或它的某一个依赖项报错”的错误,排除了程序和配置的错误后,怀疑是否是环境的问题,于是百度加msdn后 ...
- 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
64位系统 IIS7.0配置.net网站时报错:未能加载文件或程序集"XXX"或它的某一个依赖项.试图加载格式不正确的程序. 背景: 在64位的操作系统中, IIS7.0配置.ne ...
- 未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。
在本机WIN7机器上的WebService部署到Win2008R2上发现错误 “/”应用程序中的服务器错误. 未能加载文件或程序集“XXXXXX”或它的某一个依赖项.试图加载格式不正确的程序. 说明: ...
- 未能加载文件或程序集“WcfService”或它的某一个依赖项。试图加载格式不正确的程序。
“/”应用程序中的服务器错误. 未能加载文件或程序集“WcfService”或它的某一个依赖项.试图加载格式不正确的程序. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息, ...
- asp.net 未能加载文件或程序集“WebApi”或它的某一个依赖项。试图加载格式不正确的程序。
http://blog.csdn.net/lingxyd_0/article/details/43155039 一般情况下出现这样的问题是因为.dll文件不存在或者路径不正确.但今天我遇到的情况都不在 ...
- 未能加载文件或程序集“BLL”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。
今天使用VS2012创建项目的时候,考虑到项目中代码的重用性以及清晰简洁性,搭建了一个三层架构,但是在项目运行的时候,总是报错: “未能加载文件或程序集“BLL”或它的某一个依赖项.生成此程序集的运行 ...
随机推荐
- c# 隐藏窗口在ALT+TAB中
winform: protected override CreateParams CreateParams { get { const int WS_EX_APPWINDOW = 0x40000; c ...
- easyui-datagrid统计
<script> //打印指定的table function dayin() { var tableToPrint = document.getElementById("dg&q ...
- CF696B Puzzles 概率期望
有一棵树,共有 $N$ 个节点,他会使用下列 $DFS$ 算法对该树进行遍历: starting_time是一个容量为n的数组current_time = 0dfs(v): current_time ...
- POJ 2778 DNA Sequence (矩阵快速幂 + AC自动鸡)
题目:传送门 题意: 给你m个病毒串,只由(A.G.T.C) 组成, 问你生成一个长度为 n 的 只由 A.C.T.G 构成的,不包含病毒串的序列的方案数. 解: 对 m 个病毒串,建 AC 自动机, ...
- 边框图片border-image
一.定义: 在内容变化的容器里使用,边框自动填充,由于浏览器的兼容问题,没有广泛使用 border-image属性是速记属性用于设置 border-image-source, border-image ...
- CSS字体图标
一.什么是字体图标: 1. 字体图标可以和图片一样改变透明度,旋转度,等等 2.本质是文字,可以改变大小颜色等等比较适用于移动端 总结;图标字体具有矢量效果,放大缩小不失真,而且可以使用CSS任意更改 ...
- P5024 保卫王国(动态dp/整体dp/倍增dp)
做法(倍增) 最好写的一种 以下0为不选,1为选 \(f_{i,0/1}\)为\(i\)子树的最小值,\(g_{i,0/1}\)为除i子树外的最小值 \(fh_{i,j,0/1,0/1}\)为确定\( ...
- CAS5.3服务环境搭建
什么是Overlay overlay可以把多个项目war合并成为一个项目,并且如果项目存在同名文件,那么主项目中的文件将覆盖掉其他项目的同名文件.使用maven 的Overlay配置实现无侵入的改造c ...
- Python常量类
class _const: class ConstError(TypeError): pass class ConstCaseError(ConstError): pass def __setattr ...
- comparison of truncate vs delete in mysql/sqlserver
comparison of truncate vs delete in mysql/sqlserver [duplicate] DELETE DELETE is a DML Command. DE ...