获取代码合同以在Visual Studio 2010中工作

dev*_*ium 6 c# code-contracts

我有以下代码:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(SqrtRoot(0));
        Console.WriteLine(SqrtRoot(10));
        Console.WriteLine(SqrtRoot(-10));
        Console.ReadKey();
    }

    public static int SqrtRoot(int i)
    {
        Contract.Requires(i >= 0);
        return (int)Math.Sqrt(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在调试模式下运行它,它应该在最后一行触发某种错误

Console.WriteLine(SqrtRoot(-10));
Run Code Online (Sandbox Code Playgroud)

尽管如此,它还没有.它似乎忽略了Contract.Requires()调用.在尝试使用代码合同时,我应该设置一些东西吗?

我正在使用Visual Studio 2010 RC.

谢谢

por*_*ges 5

您需要安装Visual Studio集成.虽然CodeContracts库本身是.NET 4的一部分,但您的代码需要由Code Contracts重写器(ccrewrite)重写才能正确使用库.

DevLabs站点下载安装程序.


Vic*_*aci 2

我也没有该选项卡,但我找到了解决方法:

Contract.Requires<ArgumentOutOfRangeException>(i >= 0);
Run Code Online (Sandbox Code Playgroud)

可能必须安装代码合同包,但下载链接不起作用。http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx