Подтвердить что ты не робот

Определить TRACE Constant в .NET/Visual Studio

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

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

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

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

4b9b3361

Ответ 1

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