Это рекомендуемые настройки, которые я бы выбрал для сборки выпуска, все эти настройки находятся на вкладке «Сборка» свойств проекта:
- Снимите отметку «Определить постоянную отладки»
- Снимите отметку «Определить постоянную TRACE»
- Чек"Оптимизировать код"
- В диалоговом окне «Дополнительно ...» установите для «Отладочная информация:» значение «только для pdb»
Вы можете также хотите рассмотреть возможность использования ngen для ускорения времени запуска приложения. Этот процесс должен выполняться на компьютере конечного пользователя (как правило, как часть процесса установки), однако, как правило, только улучшит производительность приложения при первом запуске *. Я бы посоветовал использовать ngen, только если у вас есть особые опасения по поводу времени холодной загрузки вашего приложения.
Что на самом деле делают эти настройки?
Константы отладки и TRACE
Константы DEBUG
и TRACE
влияют на любой код, включенный в условные директивы , например: (при необходимости замените DEBUG на TRACE)
#if DEBUG
// Anything here will not appear in the end output unless the DEBUG constant is defined
#endif
Это также влияет на любые вызовы, сделанные к методам, отмеченным Условным атрибутом , таким как Debug.Write
и Trace.Write
:
// The following call will not appear in the end output unless the DEBUG constant is defined
Debug.WriteLine("Test");
Вы можете сами проверить оба из них, используя что-то вроде IL Spy .
Обратите внимание, что эти константы не имеют другого эффекта, например, JITer не ведет себя иначе, если определена константа DEBUG
. Вы, вероятно, обнаружите, что они оказывают незначительное влияние в вашем приложении, если вы не используете здоровенные условные директивы.
Оптимизировать код
Это определяет, какую оптимизацию выполняют как компилятор (cs.exe), так и JIT-компилятор при компиляции вашего кода. Скорее всего, вы увидите большую часть улучшений производительности в результате использования этого параметра.
Следующий вопрос описывает, что делает этот параметр более подробно:
Отладочная информация
Параметр pdb-only
указывает компилятору поместить всю отладочную информацию в отдельный файл .pdb (база данных программы). Что касается конечной сборки, это точно так же, как настройка none
, в которой сборка не затрагивается, однако, если вы используете настройку pdb-only
(сверх настройки none
), символы по крайней мере доступны, если Вы хотите (вам не нужно распространять их, если вы не хотите). Это может быть очень полезно, например, при отладке аварийных дампов.
Обратите внимание, что вы не можете "вернуться" и заново сгенерировать символы для существующей сборки - если вы потеряли .pdb для сборки (или решили не создавать ее в первую очередь), это в значительной степени Потеряно навсегда! Заботьтесь об этом (особенно для сборок, которые вы выпускаете «в дикую природу»).
Единственное реальное отличие, которое вы увидите здесь, - это размер выходной сборки - это может повлиять на время загрузки и объем памяти, но в конечном итоге этот параметр, вероятно, не будет иметь особенно заметного эффекта.
(*) при условии, что пользователь использует большинство / все функции приложения при первом его запуске - процесс JITing выполняется как вызываемый метод. Читайте о JITting / ngen для более подробной информации.