2014-12-18 7 views
1

Я только что написал умную программу под названием helloworld. Это консольное приложение C# /. NET 4.5. Внутри скрученных вложенных лабиринтов логики используется Console.WriteLine().Как увидеть вывод программы консоли C# при работе в VS?

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

Теперь я нахожусь в Visual Studio, настраивая источник («Привет» более эффективен, чем «Привет») и тестирование, нажав F5. Случается, что окно консоли появляется и сразу исчезает. Я понятия не имею, что напечатала программа. Как я могу увидеть результат?

Я не хочу изменять свой источник вообще. После поиска решений я нахожу тех, кто говорит, что использует Console.ReadKey(), но потом он сосать, чтобы использовать программу в командной строке. Нет реальной причины, по которой пользователь должен будет нажать клавишу, когда программа уже выполнила свою работу. Даже если я пойду с этим, проблема с выходом исчезает, когда окно консоли закрывается после нажатия клавиши.

Я не хочу использовать Debug.WriteLine(), который записывает в окно вывода в VS, но не пишет обычный вывод для конечного пользователя.

Я обнаружил ctrl-F5, который запускает программу, как если бы она имела конечную строку Console.ReadKey(), но по-прежнему существует проблема, когда я нажимаю любую клавишу, все выходные данные исчезают вместе с окном. Через три минуты я думаю: «О, подожди, напечатал ли он« Привет »или« Хело »? Нет возможности проверить.

Похоже, что Visual Studio IDE должна каким-то образом захватить все, что только что созданная программа запишет в свою стандартную версию или эквивалент Microsoft, и показать ее на панели «Выход» или на какой-либо панели для последующего анализа. Может быть, он это делает, и я еще не знаю трюк? Похоже, это было бы общим желанием среди миллионов разработчиков C#.

+0

Хороший вопрос. Единственное постоянное состояние находится в окне вывода, поэтому звучит так, как будто вам нужно будет писать дважды. Однажды на консоль и один раз на отладчик. – BradleyDotNET

+0

Лично я бы не захотел, чтобы IDE попыталась догадаться, что я хочу сделать, я бы хотел, чтобы последовательное поведение было независимо от того, где был выполнен код. – barrick

+0

Вы слышали о TraceListeners? Один поток, с несколькими возможными пунктами назначения. –

ответ

0

Причина, по которой она автоматически закрывается, заключается в том, что она выполняется при запуске программы. Если вы хотите посмотреть, что он сделал, сделайте для него нужную команду, например, нажав любую клавишу. Console.ReadKey(); приостанавливает его и ждет, пока пользователь ударит ключ, чтобы продолжить. Поместите эту команду после команд инструкции, которые вы делаете, и она приостанавливает ее, пока вы не нажмете любую клавишу.

Console.ReadKey(); // Пауза до тех пор, пока вы не нажмете любую клавишу

0

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

Другой вариант, который у вас есть, - установить контрольные точки в Visual Studion и запустить программу, нажав F5 - она ​​остановится на следующей точке останова. А точки останова могут иметь условия, т. Е. Условные точки останова.

0

Некоторые опции: 1. обертывание #if DEBUG вокруг Console.ReadKey() 2. запустить непосредственно из открытого терминала 3. создать проект Test - но опять-таки вам нужно Console.ReadKey() для остановить его закрытие.

Смежные вопросы