首页 > 解决方案 > 代码合同在 Visual Studio 2019 中不起作用

问题描述

我正在学习代码合同,但它不会给我带来任何错误或任何东西。我正在使用 Visual Studio 2019。

这是代码:

using System.Diagnostics.Contracts;

namespace ConsoleApp1
{
    class Calculations
    {
        public static void Division(string name)
        {
            Contract.Requires(!string.IsNullOrEmpty(name));
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string s = null;
            Calculations.Division(s);
        }
    }
}

这怎么不扔给我任何东西?我打电话时几乎违反了合同Division

标签: c#.netvisual-studiocontract

解决方案


很可能是因为文档中的以下行

合约类中的大部分方法都是有条件编译的;也就是说,仅当您使用#define 指令定义特殊符号 CONTRACTS_FULL 时,编译器才会发出对这些方法的调用。CONTRACTS_FULL 允许您在代码中编写合约而不使用#ifdef 指令;您可以生成不同的版本,有些有合同,有些没有。

文档中还提到,一旦设置和使用 Code.Contracts UI,CONTRACTS_FULL就会定义。


推荐阅读