Вопрос

Я бы хотел добавить в свой код некоторые операторы print, чтобы показать, где я нахожусь, и вывести важные значения в окно консоли.

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

Это было полезно?

Решение

Все звонки в System.Diagnostics. Debug.Print () будет удален при переходе на версию выпуска.

Другие советы

Используйте Log4net с ведением журнала на уровне отладки в выпуске и уровнем предупреждений или ошибок в производство.

Преимущество этого заключается в том, что вы можете снова включить вход в среду выпуска, если у вас есть проблемы, которые вы не можете воссоздать в процессе разработки.

[EDIT] FWIW, я обнаружил, что теперь я делаю LOT менее отладочную запись в журнал, когда я использую Test-Driven Development. Большая часть моих журналов относится к категории предупреждений / ошибок.

Посмотрите на классы System.Diagnostics.Debug и System.Diagnostics.Trace.

Отладка и трассировка - это связанные, но разные действия. Пространство имен System.Diagnostics поддерживает их оба.

Используйте Debug.Write / WriteLine для записи сообщений отладки в файл журнала. (И к окну вывода.) Используйте Debug.Assert , ну почти везде. Весь код, который вы пишете с использованием класса Debug , удаляется перед компиляцией, если вы не определяете символ DEBUG в своем коде - это делается по умолчанию в опциях для конфигураций Debug и Release.

Используйте Trace.Write / WriteLine для записи сообщений трассировки. Эти методы функционально эквивалентны методам класса Debug; разница в том, что они удаляются, если вы не определяете символ TRACE в своем коде.

Классы Debug и Trace также имеют целую слегка громоздкую инфраструктуру других классов, например TextWriterTraceListener , которая позволяет вам делать такие вещи, как изменение вывода журнала трассировки из локального файла в Диск к веб-сервису (или ни к чему), просто отредактировав файл конфигурации приложения. Мой любимый трюк - реализовать TextWriter , который может записывать текст в TextBox и использовать его для перенаправления всей отладки и трассировки в пользовательский интерфейс.

Вы также можете установить флаги в файле конфигурации приложения, которые уважают методы WriteIf и WriteLineIf , но по моему опыту они становятся довольно громоздкими.

Я считаю, что в целом я счастлив, если создам свой собственный статический класс, чтобы обернуть методы Trace . Это позволяет мне включать и отключать трассировку в пользовательском интерфейсе, просто устанавливая свойство моего класса Trace .

И наконец: если вам нужно, чтобы приложение применялось к трассировке, когда каждый метод начинается и заканчивается, то для этого нужно использовать чудесный инструмент PostSharp.

Я использую: System.Console.WriteLine ()

#if DEBUG
  System.Console.WriteLine("Message");
#endif 

Вы также можете ознакомиться с решениями аспектно-ориентированного программирования. Они делают такие вещи действительно хорошо. Посмотрите на PostSharp как на хорошую реализацию. Их пример кода обычно содержит пример именно того, что вы ищете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top