Просмотр окончательного вывода консоли при запуске из Visual Studio без ReadLine () - PullRequest
0 голосов
/ 20 апреля 2020

Я отлаживаю мое консольное приложение с перенаправленным вводом из файла ( Параметры отладки / запуска / Аргументы командной строки < "filename.in"). Это означает, что я не могу использовать обычный ReadLine() / Read() / ReadKey(), чтобы держать окно консоли открытым после выполнения, потому что они будут пытаться прочитать входные данные из файла.

Мое текущее решение - это Sleep(), можете ли вы предоставить лучшие альтернативы?

using System;
using System.Diagnostics;
using System.Threading;
using static System.Console;

class Test
{
    static void Main(string[] args)
    {
        WriteLine("some output");

        if (Debugger.IsAttached) Thread.Sleep(Timeout.Infinite);
    }
}

Вместо проверки отладчика или #if DEBUG я также мог бы проверить наличие дополнительного аргумента командной строки, который я передаю только из Visual Studio. Преимущество в том, что он будет работать при запуске без отладки (но тогда я не знаю, как перенаправить ввод).

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

Последний вариант также перенаправляет вывод и просматривает его на вкладке файла. Но почему-то нет способа легко обновить sh.

Начиная с VS2019, появилась новая опция Отладка / Общие / Автоматическое закрытие консоли , но отмена снятия не кажется работать, когда ввод перенаправлен тоже. Я говорю, что это ошибка.

Так что я ищу лучшие пути. Дополнительные очки за то, что вам не нужно using, как указано выше:)

1 Ответ

1 голос
/ 20 апреля 2020

Если вы используете Visual Studio 2019 (я не знаю, будет ли работать другая версия), вы можете сделать это, выбрав Tools-> Options-> Debugging-> Uncheck. Автоматически закрывать консоль, когда отладка прекращается. enter image description here

...