不使用反射的运行时C#"找不到方法"异常

Ass*_*sin 12 .net c#

我遇到上述异常的问题.我有一个相对简单的结构,分为两个dll.

第一个包含IEntityService,IEntity,具有基本实现.第二个包含实际的实现以及接口.所以有一个IMachine服务实现IEntityService和MachineService,它实现了IEntityService和EntityService.类似的情况发生在Result集合(实体加服务)上.此外,服务(机器和结果)是部分类/接口,其中一个类是自动生成的.

现在在ResultMachine中的一个我试图获得一台机器,如果它不存在,我正在创建它并保存.但是,当我尝试保存时,尝试从EntityService类访问保存方法时,我得到了"找不到方法".但是,如果我在MachineService中包装EntityService.Save方法,它可以正常工作.

编辑:

代码不是必需的.决议是重新链接参考.什么误导我,我的dll不在GAC中,它与VS有关.更重要的是它没有强烈签名,唯一的区别是版本号.

Shi*_*iji 9

我们有几次出现此错误,您可以按如下方式重新创建问题:

  • 使用2个dll创建项目(比如一个程序dll和一个测试dll)
  • 将程序dll部署到GAC
  • 添加新方法
  • 创建测试以测试新方法
  • 构建解决方案
  • 运行测试(不在调试模式下)

您现在将获得缺少异常的方法.原因是它使用的是GAC中的旧版本的dll而没有该方法.

有时它使用旧版DLL的缓存版本,IISreset可以提供帮助.

在您的情况下检查任何旧版本的DLL.


Bry*_*her 6

我的第一直觉是检查以确保程序集包含缺少方法的类.我想有可能装配没有立即更新?