在过去的几个月里,我一直在为我的公司开发一个辅助项目,但是现在已经决定它们在现有产品中是合适的.
我一直在使用微软的代码合同开发侧面项目进行静态类型检查(部分原因是我之前没有使用它们并且渴望学习).
我的问题是,如果我将代码签入到代码库中,并且所有其他开发人员都需要安装代码合同工具才能继续开发吗?我知道有一个事实,他们都没有安装它,我在这里是初级,所以我怀疑我能说服他们所有人接受它.
我正在使用.Net 4.5,因此包含了代码契约库,但我想知道Visual Studio是否会抱怨他们CONTRACTS_FULL每次构建时都没有使用构建选项中指定的构建,或者,如果我离开CONTRACTS_FULL在构建选项中,当另一个开发人员尝试构建时会发生什么?此外,我想知道当合同失败时最终产品将如何行动,但代码尚未使用代码合同重写器构建.
我只用一个项目创建了一个新的解决方案.创建了一个简单的函数,它触发了代码合同违规,卸载了代码契约CONTRACTS_FULL但未指定.构建并运行它并收到以下错误:
Run-time exception (line 8): An assembly (probably "hdxticim") must be rewritten using the code contracts binary rewriter (CCRewrite) because it is calling Contract.Requires<TException> and the CONTRACTS_FULL symbol is defined. Remove any explicit definitions of the CONTRACTS_FULL symbol from your project and rebuild. CCRewrite can be downloaded from http://go.microsoft.com/fwlink/?LinkID=169180.
After the rewriter is installed, it can be enabled in Visual Studio from the project's Properties page on the …Run Code Online (Sandbox Code Playgroud) 几年前,在.NET 4发布之前,代码合同遍布整个博客圈,.NET 4中包含的运行时组件以及更昂贵的Visual Studio 2010版本中提供的静态检查程序.
代码合同的嗡嗡声似乎已经消失,人们是否在生产中使用它?微软研究院还在做更多的工作吗?
在 .net 框架中,有代码契约允许我在代码中指定前置/后置条件。.net core/.net 5 支持它们吗?