敲七层登录的时候。忽然间认为敲三层搞清的思路瞬间又凌乱了。花了一天的时间边敲边梳理,最终整完了,执行的时候弹出了这种错误:未能载入文件或程序集“DAL”或它的某一个依赖项。

系统找不到指定的文件。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

  “载入”二字引起了我的注意,可是我并不知道它的载入机制,于是便去询问度娘了,度娘首先说明了产生错误的原因:

1、DLL文件名称与载入时的DLL文件名称不一致。

       2、DLL文件根本不存在,即出现丢失情况。

3、载入DLL路径错误,即DLL文件存在,但载入路径不对

  依照度娘给出的原因,我去检查了前两个问题,发现那不是我的项目报错的原因,于是将目光定格在了第三个问题上。但是载入路径是怎么回事呢?这便涉及到了反射的一个原则:一切皆以UI层的bin目录中的dll名称为中心。(原因非常easy:.net类载入的机制就是默认从本程序集的bin文件里找,所以bin目录中一定要有要载入的程序集的dll)。【UI层中bin目录中要载入的程序集的dll叫什么名字AssemblyPath就使用什么名字,bin内部要载入的类的全名叫什么,className就写成什么全名。

.net中的引用:增加对某个程序集的引用就能在程序集有变化时自己主动拷贝dll。】

  相信看了上文,即便不知道怎样解决,也能知道解决这个问题的方向了。关于此问题的解决的方法有两种,各自是:

  1、把DLL层的以DAL命名的文件拷贝到UI层的debug中。

  2、改变DAL层的生成输出路径。

  解决方式我们既然有了,能肯定的一点是,都能解决这个问题,可是论解决这个问题的长久性,还是另外一种更好,为什么呢?

  依照第一种解决方式,执行程序,输入username和password。系统真的会提示“恭喜你,登录成功!”。问题看似攻克了,事实上这并非根本。把程序中的代码随意改错,又一次执行还会提示“恭喜你,登录成功!

”,这是怎么回事?打开UI层debug,发现除了DAL的dll文件的全部其它文件都是随着解决方式的生成而生成的。这么说直接拷贝是不行,治标不治本。

  这就引出了另外一种解决这个问题的方案,改变DAl的生成输出路径,改为UI层的debug文件。再又一次生成解决方式。文件的生成时间都一致了。执行就没有问题了。

  综上所述:我们解决这个问题的关键就在于让文件的生成时间一致,步调一致,执行无忧~

  文字要是看着太多。请原谅我让尊贵的读者大人遇到bug后急于找到解决的方法的烦躁心情愈加凌乱,于是我决定“负图请罪”:

  上述问题解决后。为了让自己对7层的理解度加深些。我開始着手里边相对较小的功能——改动password,就在我把代码敲完后。执行时出现了这种问题——输入的原password即便和当前用户的password不一致,也能改动成功。

  关于改动password功能,我的大概思路是这种。先推断输入的原password是否和当前用户的password一致。然后再推断password是否改动成功。然而出现了上述问题。我也非常纳闷。这两条线的代码思路是一样的,代码实现大同小异,既然可以提示我改动成功,说明不是代码的问题,于是,我便对推断原password那条线进行了分步调试,走到BLL层弹出这样一个错误——源文件与模块生成时的文件不同,指向了C:\Users\秋若枫\Desktop\机房重构七层V1.0——孙利楠\ChargeReBuild\DAL,然后询问我:仍要让调试器使用它吗?(PS:我哪知道?!)

  于是乎,我又投入了度娘的怀抱,找到了解决的方法。首先打开自己的DAL层的目录,例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

  然后,删除如图所看到的的三个文件。又一次生成解决方式。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

  最后,打开UI层,进行下图说明的操作。

  当我完毕上述操作后,再执行程序。假设原始password输入错误,就会有对应的提示了~

  关于调试器调试的提示:工具-> 选项-> 调试-> 常规 ->把“要求源文件和版本号匹配”的勾勾去掉->然后去掉“地址级的调试”的勾勾(这样就不会出现反汇编代码了。这一步可不要),然后又一次引用。

  改动password功能的实现,巩固了我敲登录时候的理解。对接下来的功能的实现,有点迫不及待了,系统。也是我们的small baby~

机房重构所遇问题"未能载入文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件"的解决的方法集锦的更多相关文章

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

    以下是我再使用抽象工厂+反射重构机房时,在Factoy中出现了以下一个问题: 去网上查了一下资料,发现这是一个非常普遍的问题,它出现的原因主要有两种: 第一种: 载入DLL路径错误.解决的方法是调整D ...

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

    这个一般出如今三层给B层与D层之间加抽象工厂-接口-映射.时候出的错.出错的地方是抽象工厂. --如图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTA ...

  3. "未能载入文件或程序集“XXX”或它的某一个依赖项。系统找不到指定的文件"的解决方式

    今天在写反射调用的时候失败了,经过调试和分析,终于攻克了,以下我就详细说明. 一,报错的现象 未能载入文件或程序集"DalSQL"或它的某一个依赖项.系统找不到指定的文件. 说明: ...

  4. win 8系统:System.IO.FileNotFoundException: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到指定的模块

    最近用CefSharp做了一个chrome核心的浏览器. 在win 7.win 10系统上都正常运行,但是在win 8系统上报错了. win 8系统:System.IO.FileNotFoundExc ...

  5. DALFactory出现"未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件”的解决方案 .

    自己在使用抽象工厂+配置文件+反射实现重构机房的过程中,遇到了这种情况, 当初自己认真的检查了反射中的代码,都是没有问题,请教了师姐,检查了抽象工厂与反射的使用都没有问题 // 查找我们将要使用的数据 ...

  6. 未能加载文件或程序集“DAL”或其他的某一个依赖项,系统找不到指定的文件

    针对这个问题我在敲VB.NET机房收费系统的时候总共出现了两次,第一次是在使用反射+抽象工厂的时候出现的,第二次是在使用VS2012自带的打包工具生成可执行文件执行exe文件的时候出现的.具体看下图: ...

  7. 其他信息: 未能加载文件或程序集“WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找 到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

    记录一下,发布web时遇到的一些问题. 一.报错信息: 其他信息: 未能加载文件或程序集“WebGrease, Version=1.5.1.25624, Culture=neutral, Public ...

  8. 未能加载文件或程序集“Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5”或它的某一个依赖项。系统找不到指定的文件。

    在创建ASP.NET MVC项目过程中发生了这个异常 未能加载文件或程序集"Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0 ...

  9. 未能加载文件或程序集“System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件

    ASP.NET 运行时错误:针对类型System.Web.Mvc.PreApplicationStartCode的应用程序邓启动初始化方法Start 引发了异常,显示下列错误消息: 未能加载文件或程序 ...

随机推荐

  1. Valgrind的用法

    Valgrind是执行在Linux上一套基于仿真技术的程序调试和分析工具,它包括一个内核──一个软件合成的CPU,和一系列的小工具,每一个工具都能够完毕一项任务──调试.分析,或測试等. Valgri ...

  2. C++ 多线程阻塞 (多线程同步)(MsgWaitForMultipleObjects)(连着消息一起控制,牛)

    在主线程定要禁止使用waitforsingleobject(),原因是会阻塞主线程的消息循环,所以必须使用另一种 MsgWaitForMultipleObjects,即可以让消息通过,下面就是一个基于 ...

  3. PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  4. 网站图标——favicon

    首先推荐一个网站图标在线制作工具favicon: 插入图标只需在head中间加入以下代码: <link rel="icon" href="img/favicon.i ...

  5. GO语言学习(九)Go 语言运算符

    运算符用于在程序运行时执行数学或逻辑运算. Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 接下来让我们来详细看看各个运算符的介绍. 算术运算符 下表 ...

  6. Spring Boot中的缓存支持(一)注解配置与EhCache使用

    Spring Boot中的缓存支持(一)注解配置与EhCache使用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决 ...

  7. html练习(3)

    1.这个小练习用到了css的四种选择器id选择器,类选择器,html选择器,通配符选择器. (1)假设一个元素中用到了各种选择器,而且选择器中的属性发生了冲突,则 优先级为id选择器>类选择器& ...

  8. Mac 环境下svn服务器的配置

    Mac 环境下svn服务器的配置 本文目录 • 一.创建代码仓库,用来存储客户端所上传的代码 • 二.配置svn的用户权限 • 三.使用svn客户端功能 在Windows环境中,我们一般使用Torto ...

  9. Oracle内存管理(之四)

    [深入解析--eygle]学习笔记 1.3 SGA管理 SGA指系统全局区(System Global Area),是一块用于载入数据.对象并保存执行状态和数据库控制信息的一块内存区域,在数据库实例启 ...

  10. win32程序如何改变字体大小颜色

    //设定文字大小和颜色 LOGFONT logfont; //改变输出字体 ZeroMemory(&logfont, sizeof(LOGFONT)); logfont.lfCharSet = ...