2012-06-19 2 views
7

Я пытаюсь добавить проверку для моего типа во время компиляции с использованием Контракта, но, к сожалению, это не работает. Например, код ниже не дает ошибки компилятора при компиляции проекта. Должен ли я что-то активировать?Contract.Assert не бросать ошибку компиляции

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

ответ

7

Да, вам необходимо включить статическую проверку. Перейдите в свойства проекта и перейдите на вкладку «Кодовые контракты». Конечно, сначала вам нужно установить статическое расширение проверки, которое IIRC доступно только для Visual Studio Ultimate. См. user documentation для получения подробной информации о доступных точных параметрах.

Обратите внимание, что это происходит после начальной фазы компиляции, поэтому иногда вы видите задержку между первой частью сборки и результатами статической проверки. (Это не ошибка «компилятора» - это ошибка «проверки контракта».)

+2

В пакете [Контракты кода] (http://research.microsoft.com/en-us/projects/contracts/) содержится static checker для контрактов ('cccheck.exe'), который работает почти со всеми версиями VS, кроме Express. Если у вас есть версия Ultimate, здорово, если вы этого не сделаете - не беспокойтесь, контракты работают с профессионалом просто отлично. :) –

+0

Пользовательская документация больше не существует Джон. проект был перенесен в github. Обновите свою ссылку –

+1

@JohnDemetriou: Обновлено, но в будущем, если вы уже знаете новую ссылку, было бы лучше просто отредактировать ответ, чтобы обновить ссылку. –

Смежные вопросы