Наличие вывода консольного приложения в Visual Studio вместо консоли.

StackOverflow https://stackoverflow.com/questions/2542599

  •  23-09-2019
  •  | 
  •  

Вопрос

При создании консольного приложения на Java с помощью Eclipse я вижу, что выходные данные помещаются в текстовое поле в самой IDE, а не появляется консоль, как в Visual Studio.Это очень удобно, поскольку даже после закрытия программы я все еще могу эффективно использовать написанный в ней текст, поскольку он не стирается, пока я не запущу его снова.Можно ли добиться чего-то подобного с помощью Visual Studio?Я знаю, что вместо того, чтобы делать

System.Console.WriteLine(str);

я могу сделать

System.Diagnostics.Debug.WriteLine(str);

но это не совсем то же самое, поскольку в окне вывода вы получаете много «мусора», как и все загруженные символы и тому подобное.

Более того, можно ли сделать все в самой IDE, когда вы запускаете приложение, вместо запуска консоли?

Это было полезно?

Решение

В меню «Инструменты» -> «Диалоговое окно параметров Visual Studio» -> «Отладка» -> установите флажок «Перенаправить весь текст окна вывода в непосредственное окно».

Другие советы

в Визуальная Студия Диалоговое окно «Параметры» -> «Отладка» -> установите флажок «Перенаправить весь текст окна вывода в непосредственное окно».Затем перейдите в настройки проекта и измените тип с «Консольное приложение» на «Приложение Windows».В этот момент Visual Studio больше не открывает окно консоли, а выходные данные перенаправляются в окно вывода в Visual Studio.Однако вы не можете делать ничего «творческого», например, запрашивать ввод ключа или текста или очищать консоль — вы получите исключения во время выполнения.

Использовать System.Diagnostics.Trace

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

Обязательно проверьте "Перенаправить весь вывод..."флажок в окнах настроек отладки:

Make sure the check the

Вы можете создать приложение-оболочку, которое запустите вместо прямого запуска реального приложения.Приложение-оболочка может прослушивать стандартный вывод и перенаправлять все в Trace.Затем измените настройки запуска, чтобы запустить оболочку, и укажите путь к реальному приложению для запуска.

Вы также можете настроить оболочку на автоматическое присоединение отладчика к новому процессу, если отладчик подключен к оболочке.

Я знаю, что это просто еще один ответ, но я решил написать что-нибудь для новых веб-разработчиков, которые могут запутаться в части «Изменение на приложение Windows», потому что я думаю, что по умолчанию это приложение MVC в Visual Studio 2013. по умолчанию используется тип вывода библиотеки классов.

Мое веб -приложение по умолчанию установлено как выходной тип «библиотеки классов». Вам не нужно это менять.Все, что мне нужно было сделать, это следовать рекомендациям: «Инструменты»> «Параметры»> «Отладка»> «Перенаправить весь текст окна вывода в немедленное окно».Затем я использовал System.Diagnostics.Trace предложение Джоэла Коегоорна выше.

Простое решение, которое работает для меня, для работы с консольными возможностями (ReadKey, String with Format, arg и т. д.), а также для просмотра и сохранения вывода:

Я пишу TextWriter, который пишет в Console и чтобы Trace и заменить Console.Out с этим.

если вы используете «Диалог» -> «Отладка» -> установите флажок «Перенаправить весь текст окна вывода в непосредственное окно», вы получите его в непосредственном окне и довольно чисто.

мой код:в начале моего кода:

   Console.SetOut(new TextHelper());

и класс:

public class TextHelper : TextWriter
    {
        TextWriter console;

        public TextHelper() {
            console = Console.Out;
        }

        public override Encoding Encoding { get { return this.console.Encoding; } }
        public override void WriteLine(string format, params object[] arg)
        {
            string s = string.Format(format, arg);
            WriteLine(s);
        }
        public override void Write(object value)
        {
            console.Write(value);
            System.Diagnostics.Trace.Write(value);
        }

        public override void WriteLine(object value)
        {
            Write(value);
            Write("\n");
        }
        public override void WriteLine(string value)
        {
            console.WriteLine(value);
            System.Diagnostics.Trace.WriteLine(value);

        }

    }

Примечание:Я переопределяю только то, что мне нужно, поэтому, если вы пишете другие типы, вам следует переопределить больше

Вместо этого вы можете собрать выходные данные в виде результата теста.

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

Если ваша цель — отладка, это простой способ предложить повторяемый сценарий отладки.

namespace Commandline.Test
{
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    [TestClass]
    public class CommandlineTests
    {
        [TestMethod]
        public void RunNoArguments()
        {
            Commandline.Program.Main(new string[0]);
        }
    }
}

Ребята, пришло время проверить последние версии Visual Studio.Наиболее рекомендуемое решение, которое раньше не помогало некоторым из вас, может сработать сейчас.

В Visual Studio 2017 (Выпуск версии 15.4.2 и выше), переходим к Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window у меня сработало.

Несколько примечаний:1.Чтобы увидеть окно немедленного просмотра, убедитесь, что вы находитесь в Отладка режим.2.Теперь в вашем распоряжении должно быть еще 3 инструмента отладки, а именно: стек вызовов, точки останова и окно команд, как показано ниже:

enter image description here

С наилучшими пожеланиями!

Шаг 1:Щелкните правой кнопкой мыши имя проекта в обозревателе решений, затем выберите тип вывода как оконное приложение.

Шаг 2:Отладка -> Параметры.. -> Отладка (развернуть) -> Общие -> Перенаправить весь текст окна вывода в непосредственное окно

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top