Определить константу TRACE в .NET / Visual Studio - PullRequest
40 голосов
/ 29 ноября 2011

В Visual Studio 2010, если вы переходите к свойствам проекта и переходите на вкладку «Сборка», появляется флажок «Определить константу TRACE».Что эквивалентно выполнению #define TRACE.

Все методы System.Diagnostics.Trace имеют [Conditional("TRACE")] вокруг них.

Мой вопрос , почему Вы бы отключили это?Я имею в виду, что если у вас не определены слушатели трассировки, значит, вы не собираетесь заполнять журнал или что-то в этом роде.Это просто странно для меня.Если вы пытаетесь выполнить вызовы в Trace, почему бы вам не захотеть управлять им через App / Web.config, а вместо этого управлять им с помощью переключателя компилятора, который исключает возможность его включения безперекомпиляция.

Я что-то упустил?Конечно, это не может быть так плохо для производительности, верно?

1 Ответ

32 голосов
/ 29 ноября 2011

Предположительно, этот флажок эквивалентен опции компилятора /define:TRACE. Возможно, вы захотите отключить эту опцию для сборки выпуска, потому что не хотите, чтобы конечные пользователи по каким-либо причинам видели вывод трассировки (например, безопасность), или для повышения производительности. Конечно, увеличение производительности будет зависеть от того, сколько работы выполняется, когда он включен, но атрибут Conditional заставит компилятор полностью удалить вызов функции (включая любое форматирование строки и т. Д.) генерируется IL, так что может иметь существенное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...