c# - 在不影响其他开发人员的情况下在 .net 4.0 中使用 codeContracts

标签 c# .net code-contracts

我是 codeContracts 的新手,我喜欢它,因为它看起来很干净。

我不喜欢我需要下载一个库才能使其工作这一事实。一直不明白为什么微软没有将它作为整个框架的一部分。

我不想强制团队中的其他同事下载它。

问题:

我能否下载扩展并将 dll 添加到构建中,以便他们在获取最新版本或使用它时无事可做?

在部署内置 Codecontracts 的应用程序之前,有什么需要了解的吗?

谢谢

最佳答案

在 .NET 4.0 中,您无需下载任何库或将任何库添加到项目中即可将代码契约添加到您的代码中。下载的部分是静态分析和ccrewrite的工具。如果您使用的是旧版本的 .NET,我建议您在开始使用代码契约之前升级到 4.0。

只要您只使用静态分析功能(静态契约(Contract)检查),您就可以使用它而不会直接干扰其他开发人员的开发过程(请继续阅读)。在这种情况下,编译或部署方面没有任何变化。

如果您打算启用执行运行时契约(Contract)检查,那么您应该让团队中的每个人都使用这些工具。您还应该确保您的生成服务器能够生成与本地 Visual Studio 相同的结果。这是因为一旦启用该功能,代码契约就会开始影响运行时行为。显然,代码的行为必须对每个人都相同。

即使您决定暂时只使用静态功能,但如果团队中的每个人都不使用这些工具,也有一个缺点:他们将无法正确维护使用代码契约的代码。重构可能需要更改契约,但如果没有工具,它们可能会无意中引入大量警告,如果您是唯一拥有这些工具的人,您将不得不修复这些警告。

也就是说,我曾在共享代码库的特定部分使用过代码契约,而团队的其他成员在使用它们时没有出现任何重大问题。当然,您仍然应该与您的同事讨论,这样他们在维护您的代码时就不会遇到任何意外。唯一一次我使用代码契约迫使他们做一些额外的工作,是当他们向我定义了契约的接口(interface)添加一个方法时。契约(Contract)在实现该接口(interface)的抽象类中,这意味着他们必须向抽象类添加该新方法的最小实现。

关于c# - 在不影响其他开发人员的情况下在 .net 4.0 中使用 codeContracts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727110/

相关文章:

c# - 全局 asax 文件删除错误

Java 支持 WS-Fed 与 SAML 作为登录协议(protocol)

c# - 如何检查组合框下拉列表是向上显示还是向下显示?

c# - 代码契约(Contract)问题

msbuild - 在使用 MSBuild 构建的库代码中使用代码契约

c# - 为什么不能证明这个契约(Contract)主张?

c# - Umbraco:具有SEO属性的Youtube视频选择器

c# - 通过反射查找asp.net webform方法

javascript - 我无法使用 CefSharp 从 WinForms 的 c# 获取一些数组

c# - GC 的固定实例 - 无法从我的托管代码中追踪