问题标签 [microsoft-contracts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
914 浏览

c# - 证明这个 Contract.Requires 需要什么?

我有一个在锦标赛中运行的应用程序,我收到了关于这个简化代码结构的合同警告:

警告是:

我究竟做错了什么?我怎样才能证明这一点IList<T>?这是静态分析器中的错误吗?如何向 Microsoft 提交错误报告?

0 投票
1 回答
1081 浏览

c# - .NET 代码合同:它可以比这更基本吗?

当我注意到来自我的 Visual Studio (2008) 内部的静态验证警告时,我只是在 Stack Overflow 上胡乱回答某人的问题:

我收到消息需要未经证实的来源!= null。在我看来,情况并非如此。这当然只是一个例子。另一方面,一些非常漂亮的东西似乎运作良好。

我正在使用 1.2.20518.12 版本(5 月 18 日)。我发现代码合同很有趣,但其他人有过这样的案例吗?您认为当前的实现在实践中是可用的,还是在这一点上认为它们纯粹是学术性的?

我已经把它变成了一个社区维基,但我想听听一些意见:)

0 投票
4 回答
4041 浏览

unit-testing - .NET 4.0 代码合同——它们将如何影响单元测试?

例如本文介绍了它们。

有什么好处?

静态分析看起来很酷,但同时它会阻止在单元测试中将 null 作为参数传递的能力。(如果您按照文章中的示例进行操作)

在单元测试的话题上——考虑到现在的情况,如果你已经练习过自动化测试,那么代码合同肯定没有意义吗?

更新

玩过 Code Contracts 我有点失望。例如,根据接受答案中的代码:

对于单元测试,你还是要写测试保证null不能通过,如果合约是业务逻辑,结果大于等于0 。换句话说,如果我要删除第一个合同,任何测试都不会中断,除非我专门对此功能进行了测试。然而,这是基于不使用更好(终极等)版本的 Visual Studio 中内置的静态分析。

从本质上讲,它们都归结为编写传统 if 语句的另一种方式。我实际使用TDD 和 Code Contracts的经验说明了为什么,以及我是如何去做的。

0 投票
1 回答
137 浏览

design-by-contract - 如何在 Visual Studio 2010 中设置 Microsoft 合同静态检查?

我最近下载了 Visual Studio 2010b2,并想重新评估我关于 Microsoft 合同静态检查器的一些问题。

我设法通过使用代码的命名空间来重用大部分System.Diagnostics.Contracts代码,但我不确定如何启用静态检查器。我需要额外的插件吗?

我的印象是按合同设计应该在 VS2010 中“正常工作”。

谢谢你的帮助。

0 投票
2 回答
2293 浏览

c# - Microsoft.Contracts 命名空间

在 asp.net 中有什么必要的 Microsoft.Contracts 命名空间?

我的意思是,在什么情况下我可以写using Microsoft.Contracts;

0 投票
5 回答
3251 浏览

c# - 为什么我在 C# 代码中得到格式错误的合同?

当我在下面编写此合同时,Visual Studio 显示错误。

Error 20 Malformed contract section in method '....get_Page'

if块的问题吗?

编辑

Lasse V. Karisen 发表评论:

怎么样:Contract.Ensures(result == null || result >= 0);

是的,Karisen,我以前试过这个,它可以编译。if但是问题仍然存在:在使用合约时是不是可以有s ?

我遇到的另一个问题是无能为力(主要考虑上面的例子),还涉及使用结果:

0 投票
1 回答
7826 浏览

c# - C#:代码契约与普通参数验证

考虑以下两段代码:

我个人更喜欢第一个版本,因为代码更清晰更小,并且可以轻松关闭合约。但缺点是 Visual Studio Code Analysis 指责我应该检查参数值是否为 null,并且构造函数的 Contracts 没有意识到正则表达式确保分钟和小时在给定的边界内。

所以我最终得到了很多错误的警告,而且我看不到用合同验证字符串值而不最终抛出除 RegEx 验证之外的 FormatExceptions 的方法。

有什么建议您将如何使用代码合同解决这种情况和等效情况?

0 投票
1 回答
519 浏览

asp.net-mvc-3 - 新 MVC 3 ViewBag 的代码契约

绞尽脑汁想弄清楚如何在 MVC 3 中满足 ViewBag 的 [X] 隐式非 Null 义务。有没有人想出一种方法来使代码合同与新的动态 ViewBag 类型相匹配?

我希望能够将 ViewBag 包装在基本控制器中,如 ViewBagSafe 等。

我确实意识到这对项目来说并不是一个真正的问题,因为 ViewBag 永远不会为空,但我想保留代码合同,默认为空检查,以防我将来的失误(并且仍然能够在没有警告的情况下编译这样我就可以轻松识别我自己的违约编码)。

0 投票
1 回答
206 浏览

facebook-c#-sdk - 无法加载文件或程序集“Facebook.Web.Contracts”或其依赖项之一

刚刚下载了 facebook c# sdk。还没有编写任何代码,只是添加了对 dll 的引用并运行了项目,因为我已经有一些其他代码正在处理。然后我在上面得到了这个错误。我肯定添加了那个 dll 以及其他的,所以不知道发生了什么。我也在使用 mefcontrib。

0 投票
1 回答
541 浏览

asp.net - 在 facebook c#sdk 中创建 facebookclient 对象时,microsoft.contracts dll 错误

以上代码产生错误......

无法加载文件或程序集“Microsoft.Contracts,Version=1.0.0.0,Culture=neutral,PublicKeyToken=736440c9b414ea16”或其依赖项之一。该系统找不到指定的文件。

我的 web.config 部分如下