Visual Studio автоматически определяет символ CONTRACTS_FULL, если вы включаете проверку контрактов на вкладке Code Contracts страницы Project Properties.
- C# 5.0 в двух словах (стр. 518)
Я хотел бы отключить/отменить определение символа, но он не отображается в поле Conditional compilation symbols
на вкладке Build
в настройках проекта.
(Я не заинтересован в полном отключении кодовых контрактов! Под этим я просто подразумеваю, что установка проверки контракта на None
не является решением).
Если это имеет значение, причина, по которой я хочу это сделать, заключается в том, что в моих релизных сборках я хочу выбрасывать только Contract.Requires<TException>
и вообще не хочу выбрасывать ContractException
.
Одно «решение», которое я нашел, состоит в том, чтобы поместить #undef CONTRACTS_FULL
в первую строку каждого файла, это исправило это, но на самом деле это было бы ужасно.
(Кстати, до сих пор VS не определял CONTRACTS_FULL
, и мне пришлось определить его самому, но я предполагаю, что некоторые настройки были изменены случайно)