В чем ключевое различие между сборкой "Debug" и "Release" в .NET?

Дубликат: Отладка vs. release в .NET

Почему в сборке приложений .NET есть режимы "Debug" и "Release"?

Какова основная техническая разница между ними?

Ответ 1

Короткий ответ заключается в том, что код, созданный в режиме "Release", будет оптимизирован для скорости или размера, а также будет иметь всю информацию, используемую для отладки удаленных

Ответ 2

Отличия:

  • Отладка вставляет NOP (инструкции процессора без операции) между полезным кодом CIL, чтобы разрешить вложение отладчика
  • Отладка не допускает различных оптимизаций:
    • Вставка (размещение кода метода вместо вызова к нему для уменьшения служебных данных)
    • Loop unrolling (замена кода цикла - например, для - с повторным кодом для устранения накладных расходов на цикл (обслуживание переменной цикла))

И многие другие. Выпуск значительно быстрее, но он не предлагает реальной поддержки отладки. Для отладки существует... режим отладки:)

Ответ 3

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

Возможно, вы заметили файлы .pdb в папке отладки. Также размер исполняемого файла довольно большой. Однако в режиме Release информация о символе отладчика опущена, предполагая, что конечный пользователь будет использовать приложение, чтобы он не предоставлялся с символами приложения.

Вы можете представить символы как информацию, предоставленную отладчику, чтобы понять, какие локальные переменные, какие функции, где установлены точки останова, и все виды информации, чтобы он мог точно рассказать вам, какая часть кода выполняется в настоящее время.

Ответ 4

Да, вы можете даже отлаживать в режиме выпуска [:)]. Для этого существуют сложные процессы.

Однако сборка версии оптимизирована для скорости и производительности. Также в лицензионном соглашении пользователя Microsoft End вы не можете развернуть файлы отладки в клиентской системе.

http://www.codeproject.com/KB/debug/releasemode.aspx