it-roy-ru.com

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

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

Проверяются опции "Определить постоянную отладки" и "Определить постоянную TRACE".

Меню ИнструментыПараметрыОтладка"Перенаправить весь текст окна вывода в окно немедленного действия" не проверено ,.

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

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

529
previous_developer

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

666
Bhargav Bhat

Это запишет в окно вывода отладки:

using System.Diagnostics;

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

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

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

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

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

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

50
Micah Armantrout

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

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

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

21
Zac

Вы можете искать

MessageBox.Show()

или же

Debug.Writeline()
16
dansasu11

Вызов

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

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

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

8
Paul Gorbas

Для этого требуется сторонний фреймворк, а именно 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 для этого действительно облегчало передачу сообщений во множество мест назначения, гарантируя, что я всегда мог легко получить доступ к выводу независимо от того, как я его запустил.

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

4
jpmc26

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

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

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

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

1
Mona Jalal

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

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

> Debug.Print <item>

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

Печать в окне вывода Visual Studio:

Debug.Writeline();
0
Amir Twito