При выполнении консольного приложения в Java с Eclipse я вижу, что вывод помещается в текстовое поле в самой IDE, а не появляется консоль, как в Visual Studio. Это пригодится, так как даже после выхода из программы я все же хорошо использую текст, написанный на нем, так как он не стирается, пока я не запустил его снова. Можно ли добиться чего-то подобного с помощью Visual Studio? Я знаю, что вместо того, чтобы делать
System.Console.WriteLine(str);
Я могу сделать
System.Diagnostics.Debug.WriteLine(str);
но это не совсем то же самое, поскольку вы получаете много "мусора" в окне "Вывод", так как все загруженные символы и т.д.
Еще лучше, можно ли все сделать в самой IDE, когда вы запускаете приложение, вместо того, чтобы запускать консоль?
Ответ 1
В меню "Инструменты" → "Параметры Visual Studio" → "Отладка" → установите флажок "Перенаправить текст всего окна вывода в окно немедленного действия".
Ответ 2
В диалоговом окне "Параметры Visual Studio" → "Отладка" → "Перенести все окна окна вывода" в окно "Немедленное окно". Затем перейдите к настройкам вашего проекта и измените тип "Консольное приложение" на "Приложение Windows". В этот момент Visual Studio больше не открывает консольное окно, а выход перенаправляется в окно вывода в Visual Studio. Однако вы не можете сделать ничего "творческого", например, запросить ввод ключа или текста или очистить консоль - вы получите исключения во время выполнения.
Ответ 3
Используйте System.Diagnostics.Trace
В зависимости от того, какие слушатели вы присоединяете, вывод трассировки можно перейти в окно отладки, консоль, файл, базу данных или все сразу. Возможности буквально бесконечны, так как реализация собственного TraceListener чрезвычайно проста.
Ответ 4
Это не совсем то же самое, но прочитайте сообщение в блоге Знаете ли вы, что... вы можете отображать текст внешних инструментов в окне вывода? - # 204.
Ответ 5
Убедитесь, что в окне настроек отладки установите флажок " Перенаправить все выходные...":
![Убедитесь, что вы проверяете]()
Ответ 6
Вы можете создать приложение-оболочку, которое вы запускаете, вместо прямого запуска вашего реального приложения. Приложение-оболочка может прослушивать stdout и перенаправлять все на Trace. Затем измените параметры запуска, чтобы запустить свою оболочку и пройти по пути к реальному приложению.
Вы также можете заставить обертку автоматически присоединить отладчик к новому процессу, если отладчик прикреплен к обертке.
Ответ 7
Я знаю, что это всего лишь еще один ответ, но я думал, что напишу что-нибудь для новых веб-разработчиков, которые могут запутаться в части "Переход на приложение Windows", потому что по умолчанию я полагаю приложение MVC в Visual Studio 2013 по умолчанию имеет тип вывода библиотеки классов.
Мой веб-приложение по умолчанию устанавливается как тип вывода "Библиотека классов". Вам не нужно это менять. Все, что мне нужно было сделать, это следовать рекомендациям "Инструменты" > "Параметры" > "Отладка" > "Перенаправить все текст окна вывода" в окно "Немедленное". Затем я использовал предложение System.Diagnostics.Trace
Джоэля Коэхорна выше.
Ответ 8
Вместо этого вы можете собрать результат в результате теста.
Вы не можете подавать ввод, но вы можете легко предоставить несколько тестов с различными аргументами командной строки, каждый из которых будет собирать выходные данные.
Если ваша цель - отладка, это невысокий способ предложить повторяемый сценарий отладки.
namespace Commandline.Test
{
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class CommandlineTests
{
[TestMethod]
public void RunNoArguments()
{
Commandline.Program.Main(new string[0]);
}
}
}
Ответ 9
Простое решение, которое работает для меня, для работы с консольной способностью (ReadKey и т.д.), А также для просмотра и сохранения результатов:
Я пишу TextWriter, который пишет в Console
и в Trace
и заменяет Console.Out
им.
если вы используете Dialog → Debugging → отметьте "Перенаправить весь текст выходного окна в немедленное окно", вы получите его в немедленном и довольно чистом.
мой код: в начале моего кода:
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);
}
}
Примечание: я переопределяю только то, что мне нужно, поэтому, если вы пишете другие типы, вы должны переопределить больше
Ответ 10
Шаг 1: Щелкните правой кнопкой мыши на имени проекта в обозревателе решений, а затем сделайте тип вывода в качестве оконного приложения
Шаг 2: Debug--> Параметры..--> Отладка (развернуть) → General--> Перенаправить весь текст окна вывода в окно немедленного действия
Ответ 11
Вам нужно только изменить тип вывода в настройках проекта на приложение Windows. Ничего больше. Тогда он будет использовать окно " Вывод " вместо окна консоли.