0

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

注意:我没有替换除 DA 之外的任何其他 dll

4

1 回答 1

1

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

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

但是当您尝试仅替换的 DA 程序集时,当您的 BL 程序集代码执行时,它仍在寻找带有IEnumerable参数的方法,但该方法不再存在,因此出现异常。

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

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

于 2016-10-20T15:04:01.027 回答