在发布版本中找不到方法

Method not found on release build

最近,我的网站速度变慢,并且已经找到了原因。背后的原因是因为我的 DA 层中的方法具有 IEnumerable 参数而不是 IQueryable。我已经重构了我的 DA 中的参数,并且成功构建了解决方案。但是在替换prod中DA的dll后,BL层出现了not found method的错误。它正在寻找的方法是前一个具有 IEnumerable 参数的方法。为什么我在我的解决方案中构建代码时遇到了这个问题?

注意:除了 DA

我没有替换任何其他 dll

Why am I encountering this when I built the code in my solution without fail?

因为您大概也在重建您的 BL 项目。没关系 - 该方法仍然存在名称,并且新参数类型可能与您传递的参数兼容,因此您的源代码仍然可以编译。

但是当你尝试替换 just 你的 DA 汇编时,当你的 BL 汇编代码执行时,它仍然在寻找一个带有 IEnumerable 参数的方法,但是那个方法不再存在,因此例外。

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

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