Contract.Assert不会抛出编译错误

Tom*_*mas 9 c# compiler-construction compiler-errors

我正在尝试使用Contract在编译时为我的类型添加验证,但不幸的是它不起作用.例如,下面的代码在编译项目时不会给出编译器错误.我应该启用什么吗?

Contract.Assert(false, "Invalid state!");
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

是的,您需要启用静态检查.进入项目属性并访问"代码合同"选项卡.当然,您首先需要安装静态检查程序扩展,IIRC仅适用于Visual Studio Ultimate.有关可用选项的详细信息,请参阅用户文档.

请注意,这是初始编译阶段之后发生的,因此有时您会看到构建的第一部分与静态检查器的结果之间存在延迟.(这不是真正的"编译器"错误 - 这是"合同检查"错误.)

  • [代码约定](http://research.microsoft.com/en-us/projects/contracts/)包中包含合同的静态检查程序(`cccheck.exe`),它几乎适用于VS的每个版本,Express除外.如果您拥有Ultimate版本,那么很棒,如果您没有 - 不用担心,合同与Professional合作就好了.:) (2认同)