2

我们在代码库中使用 Microsoft 的代码合同。

一个项目中有Contract.Requires语句,但发布的构建配置没有勾选“执行运行时合同检查”复选框。

当发布版本命中Contract.Requires语句时,会生成异常。这最终会逐渐蔓延并导致System.ServiceModel.CommunicationException使用代码协定的 Web 服务出现问题。

异常**中没有任何迹象表明这是代码合同问题。

有什么办法可以揭露这是一个代码合同问题吗?

该问题已通过勾选发布构建配置的“执行运行时合同检查”复选框来解决,但最好在运行时提供更好的诊断信息。

在此处输入图像描述

** 仍在研究内部异常。

4

1 回答 1

4

即使您不希望运行时检查,也始终需要重写器。该选项的名称具有误导性!如果要关闭运行时检查,则需要启用该复选框,但将下拉菜单设置为“无”。

如果您没有启用重写器,代码将只调用 Contracts 类中的实际方法,这些方法实际上只是重写器访问的虚拟方法。如果你真的打电话给他们,他们只会抛出一个异常。

于 2012-07-08T20:59:11.860 回答