Получение контрактов кода для работы в Visual Studio 2010 - PullRequest
6 голосов
/ 15 февраля 2010

У меня есть следующий код:

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);
    }
}

Я запускаю его в режиме отладки, и в последней строке должно появиться сообщение об ошибке

Console.WriteLine(SqrtRoot(-10));

Хотя по какой-то причине это не так. Кажется, он игнорирует вызов Contract.Requires (). Должен ли я что-то настроить при попытке использования контрактов по коду?

Я использую Visual Studio 2010 RC.

Спасибо

Ответы [ 3 ]

5 голосов
/ 04 марта 2010

Вам необходимо установить интеграцию Visual Studio. Хотя сама библиотека CodeContracts является частью .NET 4, ваш код должен быть переписан переписчиком Code Contracts (ccrewrite), чтобы фактически использовать библиотеку правильно.

Загрузите установщик с сайта DevLabs .

2 голосов
/ 15 февраля 2010

У меня тоже нет этой вкладки, но я нашел обходной путь:

Contract.Requires<ArgumentOutOfRangeException>(i >= 0);

Возможно, пакет контрактов с кодом должен быть установлен, но ссылка для скачивания не работает. http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

0 голосов
/ 15 февраля 2010

Я думаю, что вы должны включить проверку контракта во время выполнения в настройках проекта (должна быть панель «Контракты кода» ...)

Дополнительную информацию см. В пользовательской документации (раздел 6).

...