Microsoft Code Contracts能够用于ASP.NET网站吗?

7
我目前在ASP.NET MVC应用程序中使用Microsoft Code Contracts,没有任何问题,但是我似乎无法在基本的ASP.NET Web网站中运行它。我不确定它是否适用于这种类型的项目(尽管这并不重要),所以我想向大家介绍一下。
我可以很好地编译合同,但是代码跳过了它们,因为我认为它还没有通过属性页面启用,就像您在其他项目类型(即ASP.NET MVC)中所做的那样。我已经转到了项目的属性页面(显示对话框而不是典型的属性页面)在我的ASP.NET网站中,但它没有产生相同的菜单选项,因此没有专门用于Code Contracts的部分。
此外,我已经在类库项目中正确启用了Microsoft Code Contracts,我用它来将业务逻辑与网站分离。合同编译得很好,但是当合同被违反时,它会抛出一个相当不明确的“System.ExecutionEngineException类型的异常”错误,没有内部异常。我的合同指定了违规时要显示的消息,但该消息不在异常中。它只是停止了进程的执行(我认为这是Microsoft Code Contracts的默认功能)。

我找不到任何明确说明特定项目类型可以或不可以(或不应该)与合同一起使用的地方,所以我想看看是否有人遇到过这个问题。

感谢任何帮助!


你是否也遇到了同样的问题,最终找到了解决方法? - Kieron
2个回答

1

我曾经遇到过同样的问题,这是我解决它的方法:

在引用的类库中,右键点击 -> 属性 -> 代码合同。 确保“执行合同检查”已被选中。我将其设置为“完整” 合同参考程序集:确保其设置为“构建”

保存更改。

对于那些没有在其代码中使用合同的引用类库,请将合同参考程序集设置为“不构建”。

然后在MVC项目中,勾选代码合同的“执行合同检查”。我将其设置为“完整”。

希望能帮助到有需要的人。


0

这听起来不像是合约问题,更像是构建/配置问题。您尝试过部署预构建的网站吗?您确定您的网站代码能够看到合约代码吗?ASP.NET运行时是否使用CLR 4.0,还是看到了早期的Microsoft.Contracts.dll?等等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接