最近,我在网站上遇到了一个减速并且已经找到了原因。背后的原因是因为我的DA层中的方法具有IEnumerable参数而不是IQueryable。我已经在我的DA中重构了参数,并且解决方案已成功构建。但是在替换prod中的DA的dll时,BL层中没有发现错误方法。它正在寻找的方法是前一个具有IEnumerable参数的方法。当我在解决方案中构建代码时,为什么遇到这种情况呢?
注意:除了DA
之外,我没有替换任何其他dll答案 0 :(得分:1)
为什么我在解决方案中构建代码时遇到了这个问题?
因为你正在重建你的BL项目,大概是。这很好 - 该方法仍然存在名称,并且新参数类型与您传递的参数预先兼容,因此您的源仍然可以编译。
但是当你尝试更换只是你的DA程序集时,当你的BL汇编代码执行时,它仍在寻找一个带有IEnumerable
参数的方法,但该方法不存在任何更多,因此例外。
简单地说,就二进制兼容性而言,更改方法参数类型不是向后兼容的更改。
只需重建整个项目,并替换取决于DA程序集的所有,以及DA程序集本身。理想情况下,完全替换您构建的所有内容 - 这样您就知道您拥有一组一致的程序集。