无法从程序集“EPaymentInvoiceicing,版本=1.0.0.0,区域性=中性,公钥令牌=空”加载类型“代理
本文关键字:令牌 公钥 代理 类型 加载 中性 程序集 EPaymentInvoiceicing 版本 区域性 | 更新日期: 2023-09-27 18:30:23
我已经为此苦苦挣扎了好几天了。 谷歌搜索和尝试不同的东西,但没有进展。
我正在做一个MVC项目,但我需要使用另一个项目(Web项目)的服务。我确实构建了 Web 项目并在 mvc 项目中引用了它的 dll。我可以从引用的项目中访问成员,并且一切都可以很好地编译。
但是,问题在于运行时,我的代码正在调用引用项目的类,并且它抛出这个"无法加载类型"!
这是有问题的代码行
CurrentAgency = new AgencySystem().RetrieveByApiCode(agencyCode);
代理系统位于引用的程序集中。
但它一直在说 "无法从程序集'EPaymentInvoicing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'加载类型'EPaymentInvoicing.BusinessFacade.AgencySystem'。
知道为什么吗?注意:引用的项目是使用 vs2008 构建的,MVC 项目是在 vs2010 中构建
的谢谢(如果您需要更多信息,我将很高兴)
问题出在程序集名称上。多亏了 Saibal,我能够看到两个项目具有相同的程序集名称,并且运行时可能引用了引用程序集并在那里查找 AgencySystem tyoe。
更改其中一个程序集的名称解决了我的问题。
检查平台类型。可能是 dll 是为 x64 编译的,而你的项目设置为 x86,反之亦然。
我不认为这是一个平台问题,因为在这种情况下它应该抛出一个BadImageFormatException。
智能感知是否识别 AgencySystem 类? 如果这是真的,那么您可能引用了一个比编译文件夹中复制的程序集更新的程序集,因此清理解决方案(并可能删除 bin 和 obj 文件夹)应该可以修复它。
如果智能感知无法识别该类,那么它可能不存在。
我建议向 EPaymentInvoiceicing 程序集添加版本代码和强名称,特别是如果您将其引用为编译程序集而不是项目。