Что пишет Console.WriteLine() во время выпуска?

Итак, мне было интересно, когда работает обычное приложение winforms, куда записывает метод Console.WriteLine()?

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

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


person Community    schedule 20.06.2013    source источник
comment
Я думаю, что Латвия - правильный ответ ;) Интересным дополнительным вопросом может быть: Можете ли вы подключиться к стандартному выводу запущенного процесса (для целей ведения журнала)?   -  person 500 - Internal Server Error    schedule 20.06.2013


Ответы (3)


Вы говорите о Console.WriteLine или Debug.WriteLine?

Console.WriteLine работает одинаково в конфигурации отладки и выпуска. Если вы настроите свой проект как консольное приложение и запустите его в режиме выпуска, вы сначала получите консоль в фоновом режиме, где вы увидите все свои выходные данные.Это проект Winform, настроенный для запуска в качестве консольного проекта и записывающий Hello World в событии загрузки формы

Debug.WriteLine имеет условный оператор, если DEBUG не определен. Ничего не пишет.

person Oscar    schedule 20.06.2013

Я думаю, что ваш вопрос на самом деле о желании захватить Console.WriteLine(). Во-первых, Console.WriteLine() пишет в стандартный поток вывода, который можно прочитать, подключив консольное окно или используя другие средства перехвата потока.

Если вы хотите получить информацию об отладке или журнале, которую вы хотите использовать

System.Diagnostics.Trace.WriteLine

Затем, чтобы отправить вывод в файл, вы можете настроить TraceListener это может быть файл или что-то в этом роде.

person Brad Rem    schedule 20.06.2013
comment
Это не обязательно так. Можно читать из стандартного вывода без использования окна консоли. Например, он может быть прочитан программой запуска, которая использует Process.Start для его запуска, а затем получит доступ к стандартному вводу/выводу. - person Servy; 20.06.2013
comment
@Servy, хорошо, я обновил свой ответ, надеюсь, он более точен. - person Brad Rem; 20.06.2013

Console.WriteLine() будет писать на стандартный вывод в режиме отладки или выпуска. Так что у вас есть способ поймать его в режиме выпуска.

Есть альтернатива Debug.WriteLine, которая, насколько я помню, не компилируется в релизе.

person 3wic    schedule 20.06.2013