Contract.Assert不会抛出编译错误

时间:2012-06-19 11:08:59

标签: c# compiler-construction compiler-errors

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

Contract.Assert(false, "Invalid state!");

1 个答案:

答案 0 :(得分:8)

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

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