Можно ли использовать Trace.WriteLine в режиме выпуска?
И в чем основное отличие между Trace.Write и Debug.Write?
Ответ 1
Оба условно скомпилированы с использованием атрибута [Conditional].
Если флаг TRACE определен в сборке, то вызов класса TRACE приведет к записи трассировки. По умолчанию TRACE определяется как в режиме отладки, так и в режиме release. Если флаг не определен, ничего не произойдет.
Если флаг DEBUG определен, то вызовы класса DEBUG приводят к тому, что вывод записывается в поток отладки. По умолчанию DEBUG определяется только в режиме отладки.
Другим существенным отличием является то, что с отслеживанием легко настроить трассировщики и позже решить, что вы хотите сделать с выходом трассировки, Он более гибкий, чем отладочный вывод, и обычно лучше подходит для входа в производственное приложение.
Ответ 2
DEBUG:
RELEASE:
Как вы видите, константа TRACE включена в обоих конфигурациях по умолчанию.
Ответ 3
Разница заключается в режиме Release.
Debug.Write не будет скомпилирован в код, если символ DEBUG не определен, то есть компилируется в режиме Release.
Однако Trace.Write будет скомпилирован как в режиме отладки, так и в режиме Release.