Практическое руководство. Условная компиляция с использованием атрибутов Trace и Debug

Примечание.

Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.

При отладке приложения во время разработки выходные данные трассировки и отладки отображаются в окне «Вывод» Visual Studio. Однако чтобы включить возможности трассировки в развернутом приложении, необходимо скомпилировать инструментированные приложения с включенной директивой компилятора TRACE. Это позволяет компилировать код трассировки в выпускаемой версии приложения. Если не включить директиву TRACE, весь код трассировки игнорируется во время компиляции и не включается в исполняемый код, который будет развернут.

Методы трассировки и отладки имеют связанные условные атрибуты. Например, если условный атрибут трассировки имеет значение true, все операторы трассировки включаются в сборку (компилированные файлы .exe или .dll); если условный атрибут Trace имеет значение false, операторы трассировки не включаются.

Для сборки можно включить условный атрибут Trace или Debug, оба эти атрибута одновременно или ни один из них. Следовательно, существует четыре типа сборки: Debug, Trace, обе или ни одной. Некоторые сборки выпуска для продуктивного развертывания могут не содержать ни одну из них, однако большинство сборок отладки содержат обе.

Можно задать параметры компилятора для вашего приложения несколькими способами.

  • Страницы свойств

  • Командная строка

  • Оператор #CONST (для Visual Basic) и #define (для C#)

Изменить параметры компиляции можно в диалоговом окне «Страницы свойств».

  1. В обозревателе решений щелкните узел проекта правой кнопкой.

  2. Выберите в контекстном меню команду Свойства.

    • В Visual Basic щелкните вкладку Компиляция в левой области страницы свойств, затем щелкните Дополнительные параметры компиляции, чтобы отобразить диалоговое окно Дополнительные параметры компилятора. Установите флажки для параметров компилятора, которые необходимо включить. Снимите флажки для параметров, которые необходимо отключить.

    • В C# выберите Построить в левой области страницы свойств, а затем установите флажки для параметров компилятора, которые нужно включить. Снимите флажки для параметров, которые необходимо отключить.

Компиляция инструментированного кода с помощью командной строки

  1. Задайте условный параметр компилятора в командной строке. Компилятор включит код трассировки или отладки в исполняемый файл.

    Например, следующая инструкция компилятора, введенная в командной строке, включит код трассировки в компилируемый исполняемый файл.

    Для Visual Basic: vbc -r:System.dll -d:TRACE=TRUE -d:DEBUG=FALSE MyApplication.vb

    Для C#: csc -r:System.dll -d:TRACE -d:DEBUG=FALSE MyApplication.cs

    Совет

    Чтобы скомпилировать несколько файлов приложений, оставьте пробел между именами файлов, например MyApplication1.vb MyApplication2.vb MyApplication3.vb или MyApplication1.cs MyApplication2.cs MyApplication3.cs.

    Директивы условной компиляции, используемые в приведенных выше примерах, имеют следующие значения.

    Директива Значение
    vbc компилятор Visual Basic
    csc Компилятор C#
    -r: Ссылка на внешнюю сборку (EXE или DLL)
    -d: Определяет символ условной компиляции

    Примечание.

    Необходимо ввести команды TRACE или DEBUG буквами верхнего регистра. Для получения дополнительных сведений о командах условной компиляции введите vbc /? (для Visual Basic) или csc /? (для C#) в командной строке. Дополнительные сведения см. в разделах Построение из командной строки (C#) или Вызов компилятора командной строки (Visual Basic).

Выполнение условной компиляции с помощью #CONST или #define

  1. Введите соответствующую инструкцию для используемого языка программирования в верхней части файла исходного кода.

    Язык Оператор Результат
    Visual Basic #CONST TRACE = true Включает трассировку
    #CONST TRACE = false Отключает трассировку
    #CONST DEBUG = true Включает отладку
    #CONST DEBUG = false Отключает отладку
    C# #define TRACE Включает трассировку
    #undef TRACE Отключает трассировку
    #define DEBUG Включает отладку
    #undef DEBUG Отключает отладку

Отключение трассировки или отладки

Удалите директиву компилятора из исходного кода.

- или -

Удалите комментарий к директиве компилятора.

Примечание.

Когда все готово для компиляции, можно выбрать команду Построить из меню Сборка или использовать метод командной строки (но без ввода d:), чтобы определить символы условной компиляции.

См. также