我正在尝试使用 Contract 在编译时为我的类型添加验证,但不幸的是它不起作用。例如下面的代码在编译项目时不会给出编译器错误。我应该启用一些东西吗?
Contract.Assert(false, "Invalid state!");
我正在尝试使用 Contract 在编译时为我的类型添加验证,但不幸的是它不起作用。例如下面的代码在编译项目时不会给出编译器错误。我应该启用一些东西吗?
Contract.Assert(false, "Invalid state!");
是的,您需要启用静态检查。进入项目属性并访问“代码合同”选项卡。当然,您需要先安装静态检查器扩展,IIRC 仅适用于 Visual Studio Ultimate。有关可用选项的详细信息,请参阅用户文档。
请注意,这发生在初始编译阶段之后,因此有时您会看到构建的第一部分与静态检查器的结果之间存在延迟。(这不是真正的“编译器”错误——它是“合同检查”错误。)