Мне было любопытно, каковы различия между режимами отладки и выпуска компилятора .NET, и я натолкнулся на эти вопросы о отладка против выпуска в .NET и причины, по которым выпуск будет вести себя иначе, чем отладка. До этого момента я действительно не обращал особого внимания на эти режимы компилятора. Теперь буду.
Мой вопрос: если я использую среду тестирования (NUnit) и TDD, столкнусь ли я с какими-либо проблемами, если я просто всегда компилирую в режиме выпуска?
Извините, я имел в виду компиляцию. Я обновил вопрос, чтобы отразить это. Спасибо.





Вы используете TDD. Вы пишете свой тест. Тест не пройден. Вы пишете код, чтобы пройти тест. Код не работает. Вы смотрите на написанный вами код и не видите очевидной причины, по которой он не работает. Вы еще что-нибудь рассуждаете или запускаете тест в отладчике (используя TestDriven.Net) и проходите тест? Может быть, я просто недостаточно умен, чтобы всегда понимать, почему мой код не работает, но обычно я делаю последнее, когда я в тупике.
Для отладки.
Как сказал Тванфоссон, даже если вы обычно не используете отладчик (я знаю, что не использую), иногда вам нужно.
Режим отладки отключает многие оптимизации. Это означает, что когда вы получите трассировку стека, он будет больше похож на исходный код.
Довольно существенная разница между конфигурациями отладки и выпуска заключается в том, что вызовы методов, отмеченных ConditionalAttribute, компилируются только в том случае, если определен связанный символ. Таким образом, ваши вызовы методов класса Debug не включаются, если вы компилируете с использованием конфигурации выпуска.
Это позволяет вам украсить ваш код утверждениями и кодом, который выводит информацию на консоль, и при этом быть уверенным, что никакие из этих накладных расходов не появятся в вашем коде доставки.
Кроме того, edit-and-continue - чрезвычайно полезный инструмент, и он полагается на метаинформацию, которая опускается в сборках релизов.
Вы говорите о Бег в режиме выпуска или составление в режиме выпуска? Они очень разные.