Assembly.Load()不能加载程序集的问题

会出现“未能加载文件或程序集“Com.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件”的情况。就是无法找到该程序集,主要是没理解它运行的机制,其实如果
Assembly.Load(path).CreateInstance(className);
写成
Assembly.Load(“Com.SQLServerDAL.dll").CreateInstance(className);
这找的不是一个名称空间,而是在bin里的一个dll文件。而项目SQLServerDAL默认生成的dll文件的名字是SQLServerDAL.dll,于是就会出现以上的错误。那么只要在该项目属性里把程序集名称改成“Com.SQLServerDAL“就行了。

 ===================================================================================================

错误描述:未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。文件不存在。 

原因:1.在利用分层设计思想开发时,关于动态反射的理解不清晰。 

       2.由于开发工具的bug问题,造成未能加载程序集。 

解决方案: 

1.反射编程要求在网站的Bin文件夹中有已经编译好的.DLL文件(即保持DLL文件存在),并且保持名称和编译前类库的名称一致。可称:添加引用性。 

2.查看网站中的项目(类库)属性,确认是否默认命名空间和程序集名称以及Bin文件夹下的DLL文件名称是否一致,不一致则会出现未能加载文件或者程序集,所以的修改项目的属性。可称:名称一致性。 

3.建议在编程的时在创建类库的时候写上系统名称+项目名称,能够有效的避免Bug产出。即:SystemName.Model或者SystemName.IDAL。eg:BBS.Model。可称:名称完整性。

最主要:path的DLL需要在网站WEB的BIN目录中

原文地址:https://www.cnblogs.com/hejunrex/p/2264966.html