Могу ли я использовать Trace.WriteLine в режиме деблокирования?Trace.WriteLine в режиме выпуска?
И в чем основное отличие между Trace.Write и Debug.Write?
Могу ли я использовать Trace.WriteLine в режиме деблокирования?Trace.WriteLine в режиме выпуска?
И в чем основное отличие между Trace.Write и Debug.Write?
Оба условно скомпилированы с использованием атрибута [Conditional]
.
Если в сборке установлен флаг TRACE
, то вызовы класса Trace
приведут к записи трассировки. По умолчанию TRACE
определяется как в режиме отладки, так и в режиме release. Если флаг не определен, ничего не произойдет.
Если флаг DEBUG
определен, то вызовы класса Debug
приводят к тому, что выходные данные записываются в поток отладки. По умолчанию DEBUG
определяется только в режиме отладки.
Другое важное отличие состоит в том, что при отслеживании легко настроить trace listeners и решить позже, что вы хотите сделать с выходом трассировки. Он более гибкий, чем отладочный вывод, и обычно лучше подходит для входа в производственное приложение.
Разница заключается в режиме деблокирования.
Debug.Write не будет скомпилирован в код, если символ DEBUG не определен, то есть компилируется в режиме деблокирования.
Однако Trace.Write будет скомпилирован как в режиме отладки, так и в режиме Release.
Так, если флаг TRACE определяется по умолчанию, есть способ отключить его в режимах выпуска или отладки? – Carlo
@ Карло: Конечно, это в свойствах проекта, вкладке «Создание». Есть два флажка, в котором указано «Определить константу DEBUG», а другое - «Определить константу TRACE». Они соответствуют тому, как будут вести себя классы 'Debug' и' Trace' и соответствующие им методы 'Write'. – Aaronaught
Отлично! Спасибо, отличный ответ! – Carlo