VB.Net未能加载文件或程序集“XXX”或它的某一个依赖项。

   在机房重构七层时,运行时出现如下错误,真是折磨了自己半天,网上查出很多办法,除了一种办法没使,其它的都试了,还是不行,其实在此期间,看到师哥的一篇博客,是有关这个问题的,但感觉有点看不懂,其实是自己没仔细看,一看到他那片博客关于这个问题,写了一篇,就给人一种很难的感觉,看到他那篇博客里面设计到很多文件夹感觉见都没见到过,所以就放弃了,但其实该文件夹就在自己建的项目里,自己没去点,就浪费了好多时间,最后还是用师哥的方法解决的。

问题出处

   首先该问题出现在反射的代码中,即 

Return CType(Assembly.Load(AssemblyName).CreateInstance(className), Login.IDAL.ISelectUserAccess)

问题原因:(此处看的师哥的博客)

1.文件名与加载时的DLL文件名不一致。
2:.DLL文件根本不存在,即出现丢失情况。

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

3.:加载DLL路径错误,即DLL文件存在,但加载路径不正确

解决方案:  

  首先确保自己的代码准确无误,主要是看参数是否正确

  即在该项目My Project即可找到对应的程序集名、命名空间


  下面熟悉一下什么事.dll文件:DLL是一种动态链接库文件,是一种不可执行文件,它本身是一个包含可由多个程序同时使用的代码和数据的库,(不是所以能运行的文件都叫可执行文件,有的可能是被执行,和一些程序绑定在一起,当你点击时运行,貌似看起来像是执行文件)。DLL有两种好处@1:可使进程可调用不属于其可执行代码的函数;@2:有助于共享数据和资源。

  确保参数正确后,发现U层bin文件夹下面的bebug文件夹下面除了没有D层的.dll文件,其它层的.all文件都有。从师哥的博客中得知:.net类加载的机制就是默认从本程序集的bin文件中找要加载的程序集的.dll文件,所以启动项目的bin文件夹下要有其它程序的.dll文件(本人在各个程序的bin文件夹下找,发现一个规律,就是你本程序引用了谁,在本程序的bin下面就有引用程序的.dll文件,包括间接引用的【即U层引用Facade层,Facade层引用B层,所以U层里有B层的.dll文件】,引用的机制是:在本程序集有变化时会自动拷贝.dll)。于是乎我就手动的把D层的.dll文件复制到了U层下面,此时该问题以解决,但一运行又出现了另一个错:

  刚才是我手动的把文件拖到另一个文件夹下的,此问题的解决办法是在D层的生成输出路径下,使用浏览把U层的.dll文件添加进去


  反射:提供一种编程的方式,在程序运行期可获得NET的组成部分的相关内容,机房收费系统用反射的目的就是:翻遍更换数据库

  这是在网上搜的一篇有关VB.NET的反射机制的理解:http://www.cnblogs.com/pangblog/archive/2013/08/22/3275579.html

  反射还在研究。。。

总结

  其实有时总是被问题吓倒了,就如一开始就搜到师哥的博客了,但没耐心看下去,就去搜别的方法了,结果可想而知,如果一开始我能耐心看下去,去我的文件夹下多点点,问题也就解决了。由此验证了老师的话:去做就行了,此问题要说去找就行了,也就是去做了。要想发现一个程序或应用的更多功能,去多点点就行了。如果你不想动脑袋,那你将会花费更多的时间。

评论 76
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值