在发布版本中找不到的方法

时间:2016-10-20 14:59:22

标签: c# ienumerable iqueryable methodnotfound

最近,我在网站上遇到了一个减速并且已经找到了原因。背后的原因是因为我的DA层中的方法具有IEnumerable参数而不是IQueryable。我已经在我的DA中重构了参数,并且解决方案已成功构建。但是在替换prod中的DA的dll时,BL层中没有发现错误方法。它正在寻找的方法是前一个具有IEnumerable参数的方法。当我在解决方案中构建代码时,为什么遇到这种情况呢?

注意:除了DA

之外,我没有替换任何其他dll

1 个答案:

答案 0 :(得分:1)

  

为什么我在解决方案中构建代码时遇到了这个问题?

因为你正在重建你的BL项目,大概是。这很好 - 该方法仍然存在名称,并且新参数类型与您传递的参数预先兼容,因此您的源仍然可以编译。

但是当你尝试更换只是你的DA程序集时,当你的BL汇编代码执行时,它仍在寻找一个带有IEnumerable参数的方法,但该方法不存在任何更多,因此例外。

简单地说,就二进制兼容性而言,更改方法参数类型不是向后兼容的更改。

只需重建整个项目,并替换取决于DA程序集的所有,以及DA程序集本身。理想情况下,完全替换您构建的所有内容 - 这样您就知道您拥有一组一致的程序集。