7

我目前在 ASP.NET MVC 应用程序中使用Microsoft Code Contracts没有任何问题,但我似乎无法在基本的 ASP.NET 网站中完全运行它。我不完全确定它是否适用于这种类型的项目(尽管它不应该重要)所以我想把它带给每个人。

我可以很好地编译合同,但代码会跳过它们,因为我假设它没有像在其他项目类型(即 ASP.NET MVC)中那样通过属性页面启用。我已经在我的 ASP.NET 网站中访问了项目的属性页面(显示对话框而不是典型的属性页面),但它没有产生相同的菜单选项,因此没有专门的部分到代码合同。

此外,我在一个类库项目中正确启用了 Microsoft 代码合同,我用它来将我的业务逻辑与网站分开。合同编译得很好,但是当违反合同时,它会抛出一个相当无信息的"Exception of type 'System.ExecutionEngineException' was thrown"错误,没有内部异常。我的合同指定了在违规时显示的消息,但它不在例外范围内。它只是停止进程的执行(我相信这是 Microsoft 代码合同的默认功能)。

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

谢谢你的帮助!

4

2 回答 2

1

我有同样的问题,这就是我解决它的方法:

在 Referenced Class Libraries 中,右键单击 -> 属性 -> 代码协定。确保选中“执行合同检查”。我将我的设置为“完整”合同参考程序集:确保将其设置为“构建”

保存您的更改。

在代码中没有契约的引用类库中,将契约引用程序集设置为“不构建”。

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

希望对某人有所帮助。

于 2011-12-06T23:39:26.813 回答
0

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

于 2010-01-08T00:45:41.647 回答