Запись в окно вывода Visual Studio

Я пытаюсь написать сообщение в окне вывода для целей отладки. Я искал такую ​​функцию, как Java system.out.println(""). Я пробовал Debug.Write, Console.Write и Trace.Write. Он не дает ошибки, но ничего не печатает.

"Определить константу DEBUG" и "Определить константу TRACE".

Параметры меню → Параметры → Отладка → "Переадресовать все окна окна вывода в окно" Немедленное окно "не отмечена.

Конфигурация: активная (отладка)

Примечание. Я создал проект с мастером как "приложение Windows Forms", если это необходимо. Я понятия не имею, где искать.

Ответ 1

Добавьте пространство имен System.Diagnostics, а затем вы можете использовать Debug.WriteLine(), чтобы быстро распечатать сообщение в окне вывода среды IDE. Для получения дополнительной информации см. Следующие:

Ответ 2

Это будет записываться в окно вывода отладки:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");

Ответ 3

Использование:

System.Diagnostics.Debug.WriteLine("your message here");

Ответ 4

Debug.WriteLine

это то, что вы ищете.

Если нет, попробуйте сделать это:

Инструменты меню → Параметры → Отладка → снимите флажок "Отправить вывод немедленно".

Ответ 5

Для меня работало только пространство имен Трассировка, а не Debug:

System.Diagnostics.Trace.WriteLine("message");

Я работаю над проектом С# в Visual Studio 2010.

Ответ 6

Возможно, вы ищете

MessageBox.Show()

или

Debug.Writeline()

Ответ 7

Вызов

System.Diagnostics.Debug.WriteLine("message");

не работает при работе с .NET Core (V 1.0 или 1.1).

Мы должны создать и использовать регистратор из Microsoft.Extensions.Logging, но этот журнал появляется только в всплывающем окне консоли dotnet.exe, а не в окне вывода Visual Studio.

Ответ 8

Для этого требуется сторонняя структура, а именно Serilog, но я тем не менее нашел, что это очень гладкий опыт получения вывод в какое-то место я могу видеть.

Сначала вам нужно установить Serilog Trace sink. После установки вам необходимо настроить регистратор следующим образом:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(Вы можете установить другой минимальный уровень или установить его в значение конфигурации или любую нормальную функциональность Serilog. Вы также можете установить регистратор Trace на определенный уровень для переопределения конфигураций или, тем не менее, вы хотите сделать это.)

Затем вы просто регистрируете сообщения нормально, и они отображаются в окне вывода:

Logger.Information("Did stuff!");

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

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

Это дало мне большую гибкость в отношении того, как я потреблял вывод, без необходимости дублировать все мои вызовы на Console.Write с помощью Debug.Write. При написании кода я мог бы запустить инструмент командной строки в Visual Studio, не опасаясь потерять свой вывод, когда он выйдет. Когда я развернул его и вам нужно было что-то отладить (и у него не было доступной Visual Studio), вывод консоли был легко доступен для моего потребления. Эти же сообщения могут также записываться в файл (или любой другой приемник), когда он запускается как запланированная задача.

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

Он также требует очень минимальной настройки и кода.

Ответ 9

В Visual Studio 2015 у меня сработало следующее:

OutputDebugStringW(L"Write this to Output window in VS14.");

Прочитайте документацию для OutputDebugStringW здесь.

enter image description here Обратите внимание, что этот метод работает, только если вы отлаживаете свой код (debug mode)

Ответ 10

Это не ответ на исходный вопрос. Но поскольку я нашел этот вопрос при поиске средств интерактивного демпинга данных объекта, я решил, что другие могут извлечь выгоду из упоминания этой очень полезной альтернативы.

В конечном итоге я использовал окно команд и ввел команду Debug.Print, как показано ниже. Это напечатало объект памяти в формате, который может быть скопирован как текст, и это все, что мне действительно нужно.

> Debug.Print <item>

  id: 1
  idt: null
  igad: 99
  igbd: 99
  gl_desc: "New #20"
  te_num: "1-001-001-020"

Ответ 11

Распечатайте окно вывода Visual Studio:

Debug.Writeline();

Ответ 12

В целях отладки команда System.Diagnostics.Debug.Writeline() не будет скомпилирована в версию выпуска вашего кода, если у вас нет прослушивателей отладки. Он записывает все прослушиватели трассировки, включая окно вывода VS при работе в режиме отладки.

Для консольного приложения. Console.Writeline() будет работать, но выходные данные будут по-прежнему генерироваться в продакшен версии вашего двоичного файла.

Отладочный вывод также должен отображаться в обычном окне вывода при отладке тестов; в то время как вывод console.writeline отсутствует (но его можно найти в окне вывода теста).