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

今天遇到一个挺怪的问题,采用了工厂模式后,出去找不到程序集的问题:
未能加载文件或程序集“Tianyige.SqlServerDAL”或它的某一个依赖项。系统找不到指定的文件。

解决思路:
以前遇到过这类问题,问题在于对程序集和命名空间名称混淆了,比如:命名空间叫SQLServerDAL,而程序集可能叫“Tianyige.SQLServerDAL”,或者叫成“SqlServerDAL”,都会发生找不到对象的错误。解决方法是对应好程序集的名称:
Assembly.Load("Tianyige.SqlServerDAL").CreateInstance("Tianyige.SqlServerDAL.Category");通过bin文件夹下找到相应的DLL,确定其名称。
而这次名称对应好了,看得我眼都花了,一点错没有,还是有问题。最后将错误提示中的文件的dll文件[Tianyige.SqlServerDAL]复制到网站APP下的bin目录中,问题得以解决。

模仿pet shop4做了个工厂模式的简单例子,初步了解其中流程,做个总结。
一、创建项目IDAL,包含若干接口如 IOrder,是有关Order的数据库操作接口。
二、创建项目SQLServerDAL,其中包含一个Order类,继承IOrder接口,具体实现该接口中声明的若干函数。
三、创建项目DALFactory,就是一个数据库接口工厂,负责根据选择的数据库类型(在web.config中获取如<add key="WebDAL" value="SQLServerDAL"/>)来创建相应数据库操作接口实例。如下述代码:
        public static IOrder CreateOrder()
        {
            string path = "SQLServerDAL";
            string className = path + ".Index";
            return (IOrder)Assembly.Load(path).CreateInstance(className);
        }
四、创建项目BLL,负责业务逻辑实现。其中需要调用数据库操作函数的时候声明
private static IOrder iOrder = DataAccess.CreateOrder();
然后调用IOrder中声明(SQLServerDAL.Order类中定义)的函数。
上面就是一个基本的过程,其中需要注意几点:
1、数据接口工厂DALFactory中CreateOrder函数声明成static,其他有关的地方也要用static,因为此处是利用反射动态加载程序集,所以加载一次就够了,网上偶然看了资料,据说即使多次执行加载语句也只会加载一次。
2、会出现“未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件”的情况。其实原因贼简单,就是无法找到该程序集,主要是没理解它运行的机制,其实如果
Assembly.Load(path).CreateInstance(className);
写成
Assembly.Load(“SQLServerDAL.dll").CreateInstance(className);
就清楚了,这找的不是一个名称空间,而是在bin里的一个dll文件。而项目SQLServerDAL默认生成的dll文件的名字是SQLServerDAL.dll,于是就会出现以上的错误。那么只要在该项目属性里把程序集名称改成“SQLServerDAL“就行了。
编程的路太长了,很多的基础要打,太多的技术要学,快失去信心了!

时间: 2024-08-03 18:24:07

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

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

能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件 http://blog.csdn.net/pplcheer/article/details/7796211 做项目总是遇到各种的问题,今天就出现了这个问题.我在项目中使用EXT控件,当我添加一个刷新按钮时,报出了一个“未能加载文件或程序集“Coolite.Ext.Web”或它的某一个依赖项”的问题,后来我就重新找到我的COOLITE安装文件,将相应的DLL文件重新加载了一遍,问题解决了. 下面是我结合我的问题,查的一些资料,供

.NET 未能加载文件或程序集&ldquo;xxx&rdquo;或它的某一个依赖项。试图加载格式不正确的程序。

症状: 未能加载文件或程序集"xxx"或它的某一个依赖项.试图加载格式不正确的程序.说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息: System.BadImageFormatException: 未能加载文件或程序集"xxx"或它的某一个依赖项.试图加载格式不正确的程序.源错误:执行当前 Web 请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发

异常:未能加载文件或程序集”DAL”或它的某一个依赖项——解决办法

下面是我再使用抽象工厂+反射重构机房时,在Factoy中出现了下面一个问题: 去网上查了一下资料,发现这是一个很普遍的问题,它出现的原因主要有两种: 第一种: 加载DLL路径错误.解决办法是调整D层生成DLL的路径到UI的bin文件夹中.如下图: 反射的一个原则是:一切皆以UI层的bin文件夹中的dll名称为中心,说白一点,dll就是一个类库.我理解的反射,就是一串拼接的字符串,组成要实例化的类的名字.使用反射加载类时,默认是从UI层中的bin中找的,所以要在UI的bin文件夹下生成D层类的dl

未能加载文件或程序集“Common”或它的某一个依赖项。试图加载格式不正确的程序

原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题解决方案一:如果是64位机器,IIS--应用程序池--高级设置--启用32位应用程序 :true.解决方案二:修改项目属性--生成--目标平台(比如,X86\X64)未能加载文件或程序集"Common"或它的某一个依赖项.试图加载格式不正确的程序

未能加载文件或程序集“MagickNet”或它的某一个依赖项。试图加载格式不正确的程序

未能加载文件或程序集"MagickNet"或它的某一个依赖项 简介:之前因为系统出了问题,重装了IIS,相应的本地项目站点也重新配置了, 但当我进行网站中的一个导出操作时(会跳转到excel导出站点),出现了 此错误,如下图: 操作场景: 错误效果: 解决方案:                在应用程序池中点击应用站点的应用程序池,选择高级设置,启用32位应用程序,就OK了

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

这个一般出现在三层给B层与D层之间加抽象工厂-接口-映射.时候出的错.出错的地方是抽象工厂. --如图 咱们先理解一下这个类和这句话的意思 类 抽象工厂类目的就是可以达到可更换数据库而不用动其他代码的目的.这其实就是一个选择类.是选择SQL数据库的DLL还是其他数据库的DLL档.这里我就不再说抽象工厂和接口映射详解了 语句 这个类简单的就一句话 Return CType(Assembly.Load("DAL").CreateInstance("DAL.DGetDataTabl

目标平台、活动平台 配置,出现未能加载文件或程序集“xxx”或它的某一个依赖项报错

今天在做动态加载程序集的时候,发现明明程序集存在的情况下,还是依然报“未能加载文件或程序集“xxx”或它的某一个依赖项报错”的错误,排除了程序和配置的错误后,怀疑是否是环境的问题,于是百度加msdn后,终于找打答案,这里记录下,避免以后其他人也遇到 如果你将应用程序生成x86而不是Any CPU时,在64位操作系统中不会出错错误,而在32位操作系统中可能会出现以下错误 “/xxxxx”应用程序中的服务器错误. -------------------------------------------

未能加载文件或程序集“AAAAA”或它的某一个依赖项。试图加载格式不正确的程序。

未能加载文件或程序集“AAAAA”或它的某一个依赖项.试图加载格式不正确的程序. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.BadImageFormatException: 未能加载文件或程序集“AAAAA”或它的某一个依赖项.试图加载格式不正确的程序. 源错误: 执行当前 Web 请求期间生成了未经处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. 程

未能加载文件或程序集“BLL”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。

今天使用VS2012创建项目的时候,考虑到项目中代码的重用性以及清晰简洁性,搭建了一个三层架构,但是在项目运行的时候,总是报错: “未能加载文件或程序集“BLL”或它的某一个依赖项.生成此程序集的运行时比当前加载的运行时新,无法加载此程序集.” 在网上查找了半天也没有更好的办法,突然,灵感一现,修改.net版本,果断解决这个问题, 一开始是使用的版本是3.5:修改后的版本是:4.5 修改方法: 项目=>右键=>属性=>目标 framework=>选择版本