Когда я выполняю консольное приложение на Java с Eclipse, я вижу вывод в текстовое поле в самой IDE, вместо того, чтобы консоль выскочила, как в Visual Studio. Это очень удобно, так как даже после выхода из программы я все еще могу эффективно использовать текст, который был в ней написан, так как он не стирается, пока я не запущу его снова. Можно ли добиться чего-то подобного с помощью Visual Studio? Я знаю, что вместо того, чтобы делать
System.Console.WriteLine(str);
System.Diagnostics.Debug.WriteLine(str);
но это не совсем то же самое, так как вы получаете много «мусора» в окне вывода, как и все загруженные символы и тому подобное.
Более того, возможно ли, чтобы все выполнялось в самой IDE при запуске приложения вместо запуска консоли?
user130758 30 мар ’10 в 02:57 2010-03-30 02:57
2010-03-30 02:57
18 ответов
В меню «Инструменты» -> «Параметры Visual Studio» -> «Отладка» -> установите флажок «Перенаправить текст всего окна вывода в окно немедленного действия».
Solved: The program has exited with code 0 in Visual Studio 2022
user294822 31 мар ’10 в 18:47 2010-03-31 18:47
2010-03-31 18:47
В диалоговом окне «Параметры Visual Studio» -> «Отладка» -> установите флажок «Перенаправить текст всего окна вывода в окно непосредственного доступа». Затем перейдите в настройки проекта и измените тип с «Консольное приложение» на «Приложение Windows». В этот момент Visual Studio больше не открывает консольное окно, и вывод перенаправляется в окно вывода в Visual Studio. Тем не менее, вы не можете делать что-либо «креативное», например, запросить ввод ключа или текста или очистить консоль — вы получите исключения во время выполнения.
user39334 08 мар ’12 в 09:19 2012-03-08 09:19
2012-03-08 09:19
В зависимости от того, какие прослушиватели вы подключаете, вывод трассировки может идти в окно отладки, консоль, файл, базу данных или все сразу. Возможности буквально безграничны, так как реализация собственного TraceListener чрезвычайно проста.
user3043 30 мар ’10 в 03:05 2010-03-30 03:05
2010-03-30 03:05
Пришло время проверить последние выпуски для Visual Studio, ребята. Наиболее предлагаемое решение, которое раньше не работало для некоторых из вас, может сработать сейчас.
В Visual Studio 2017 (выпуск версии 15.4.2 и выше) Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window работал для меня.
Несколько замечаний: 1. Чтобы увидеть окно Immediate, убедитесь, что вы находитесь в режиме отладки. 2. Теперь в вашем распоряжении должно быть 3 других средства отладки, а именно: стек вызовов, точки останова и окно команд, как показано ниже:
С наилучшими пожеланиями!
user7120694 02 янв ’19 в 23:29 2019-01-02 23:29
2019-01-02 23:29
Вы можете попробовать , который позволит вам интегрировать окно консоли в VisualStudio в качестве док-панели внизу. Чтобы использовать это, вы должны
Почему не работает Visual Studio 2022 сразу после установки
- Добавьте VSConsoleVSCodeExtension в VisualStudio .
- Добавьте ссылку VSCode NugetPackage в свой проект.
- Добавить с помощью Console = VSConsole.Console; как ссылка на пространство имен в файле *.cs
- измените тип вывода с консольного приложения на приложение Windows, чтобы скрыть главное окно консоли, которое появляется при запуске консольного приложения.
Тогда ваше приложение будет использовать класс VSConsole.Console вместо класса System.Console.
user5139020 27 апр ’22 в 00:01 2022-04-27 00:01
2022-04-27 00:01
user301303 30 мар ’10 в 03:14 2010-03-30 03:14
2010-03-30 03:14
Убедитесь, что флажок «Перенаправить весь вывод. » в окнах параметров отладки:
user2223753 29 мар ’17 в 07:58 2017-03-29 07:58
2017-03-29 07:58
Я знаю, что это просто еще один ответ, но я решил написать кое-что для новых веб-разработчиков, которые могут запутаться в части «Изменение в приложении Windows», потому что я думаю, что по умолчанию приложение MVC в Visual Studio 2013 по умолчанию используется тип вывода библиотеки классов.
Мое веб-приложение по умолчанию установлено как тип вывода «Библиотека классов». Вам не нужно это менять. Все, что мне нужно было сделать, это следовать советам: «Инструменты»> «Параметры»> «Отладка»> «Перенаправить весь текст окна вывода» в окно «Немедленно» Затем я использовал System.Diagnostics.Trace предложение Джоэла Кохорна выше.
user3757322 04 дек ’15 в 18:28 2015-12-04 18:28
2015-12-04 18:28
Простое решение, которое работает для меня, для работы с консольной способностью (ReadKey, String with Format и arg и т. Д.), А также для просмотра и сохранения результатов:
Я пишу 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); >>
Примечание: я переопределяю только то, что мне нужно, поэтому, если вы пишете другие типы, вы должны переопределить больше
user7281658 13 дек ’18 в 08:32 2018-12-13 08:32
2018-12-13 08:32
Если вы используете те же методы на Console которые доступны в Debug class например, в ядре .net вы можете добавить строку ниже в качестве первой строки в program.cs файл.
global using Console = System.Diagnostics.Debug; using System.Diagnostics;
Теперь все ваши вызовы выполняются как Debug.WriteLine(string) во всех файлах *.cs в проекте. В местах, где вы хотите явно использовать console такие методы, как Console.Readline() то вы должны заменить его полным именем класса System.Console.ReadLine() .
Теперь вывод из всех ваших Console.WriteLine(string) теперь отображается в окне вывода Visualstudio. Вы можете дополнительно отфильтровать шум в output window выбрав тип сообщений, которые вы хотите видеть в этом окне, как показано ниже
user5139020 05 июн ’22 в 00:23 2022-06-05 00:23
2022-06-05 00:23
Вы можете создать приложение-оболочку, которое вы запускаете вместо непосредственного запуска вашего реального приложения. Приложение-оболочка может прослушивать stdout и перенаправлять все в Trace. Затем измените настройки запуска, чтобы запустить оболочку и указать путь к реальному приложению для запуска.
Вы также можете иметь оболочку, автоматически присоединяющую отладчик к новому процессу, если к оболочке прикреплен отладчик.
user118703 30 мар ’10 в 03:25 2010-03-30 03:25
2010-03-30 03:25
Если вам нужен вывод из Console.WriteLine, а перенаправить весь текст окна вывода в немедленное окно не работает, и вам нужно знать вывод тестов из интегрированного обозревателя тестов, используя NUnit.Framework, наша проблема уже решена в VS 2017:
Пример взят из C# In Depth от Джона Скита: это дает следующий результат в Text Explorer:
Когда мы щелкаем синий вывод в разделе Истекшее время справа, и получается следующее:
Стандартный вывод — это желаемый результат, создаваемый Console.WriteLine.
Он работает для консоли и приложений Windows Form в VS 2017, но только для вывода, созданного для обозревателя тестов при отладке или запуске; в любом случае, это моя основная потребность в выводе Console.WriteLine.
user2752308 18 июн ’20 в 04:11 2020-06-18 04:11
2020-06-18 04:11
У вас есть три возможности сделать это, но это нетривиально. Основная идея всех IDE заключается в том, что все они являются родителями дочерних (отладочных) процессов. В этом случае можно управлять стандартным вводом, выводом и обработчиком ошибок. Таким образом, IDE запускают дочерние приложения и перенаправляют их во внутреннее окно вывода. Я знаю еще об одной возможности, но она появится в будущем
- Вы можете реализовать свой собственный механизм отладки для Visual Studio. Запуск и отладка управления Debug Engine для приложения. Примеры этого вы можете найти на docs.microsoft.com (движок отладки Visual Studio).
- Перенаправление приложения формы с использованием дублирования обработчика std для C++ или использование Console.SetOut(TextWriter) для C#. Если вам нужно печатать в окне вывода, вам необходимо использовать SDK расширения Visual Studio. Пример второго варианта вы можете найти на Github.
- Запустите приложение, которое использует System.Diagnostics.Debug.WriteLine (для вывода на печать), и оно запустит дочернее приложение. При запуске дочернего элемента вам необходимо перенаправить stdout в родительский с каналами. Вы можете найти пример на MSDN. Но я считаю, что это не лучший способ.
user13709719 09 июн ’20 в 02:02 2020-06-09 02:02
2020-06-09 02:02
public class DebugTextWriter : StreamWriter < public DebugTextWriter() : base(new DebugOutStream(), System.Text.Encoding.Unicode, 1024) < this.AutoFlush = true; >sealed class DebugOutStream : Stream < public override void Write(byte[] buffer, int offset, int count) < Debug.Write(System.Text.Encoding.Unicode.GetString(buffer, offset, count)); >public override bool CanRead => false; public override bool CanSeek => false; public override bool CanWrite => true; public override void Flush() => Debug.Flush(); public override long Length => throw new NotImplementedException(); public override int Read(byte[] buffer, int offset, int count) => throw new NotImplementedException(); public override long Seek(long offset, SeekOrigin origin) => throw new NotImplementedException(); public override void SetLength(long value) => throw new NotImplementedException(); public override long Position < get =>throw new NotImplementedException(); set => throw new NotImplementedException(); > >; >
который используется путем перенаправления через
System.Console.SetOut(new DebugTextWriter())
user857848 17 фев ’23 в 15:59 2023-02-17 15:59
2023-02-17 15:59
Относительно System.Diagnostics.Debug создание большого количества «мусора» в окне вывода: вы можете отключить это, щелкнув правой кнопкой мыши в окне вывода. Например, есть элемент «Сообщения о загрузке модуля», который вы хотите отключить, и элемент «Вывод программы», который вы хотите сохранить.
user829755 20 ноя ’19 в 18:57 2019-11-20 18:57
2019-11-20 18:57
Вместо этого вы можете собрать выходные данные в результате теста.
Вы не можете предоставить ввод, но вы можете легко предоставить несколько тестов с разными аргументами командной строки, каждый из которых собирает выходные данные.
Если ваша цель — отладка, это простой способ предложить повторяемый сценарий отладки.
namespace Commandline.Test < using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class CommandlineTests < [TestMethod] public void RunNoArguments() < Commandline.Program.Main(new string[0]); >> >
user7428013 17 янв ’17 в 00:53 2017-01-17 00:53
2017-01-17 00:53
Шаг 1: Щелкните правой кнопкой мыши на имени проекта в обозревателе решений, а затем сделайте тип вывода в качестве оконного приложения
Шаг 2: Отладка -> Параметры..—> Отладка (развернуть)-> Общие -> Перенаправить весь текст окна вывода в окно немедленного действия
Источник: stackru.com
Ошибка при запуске любого кода в Visual Studio (C#)
Всем привет. Ошибка при выполнении любого кода на C# в консольном шаблоне Visual Studio. При запуске кода, даже банального WriteLine появляется в окне вывода появляется подряд много таких сообщений:
1>C:Program Files (x86)Microsoft Visual Studio2019CommunityMSBuildCurrentBinMicrosoft.Common.CurrentVersion.targets(4651,5): warning MSB3026: не удалось скопировать «C:UsersusersourcereposApp6_cyclesApp6_cyclesobjDebugnetcoreapp3.1App6_cycles.exe» в «binDebugnetcoreapp3.1App6_cycles.exe». Повторная попытка 1 начнется через 1000 мс. Процесс не может получить доступ к файлу «binDebugnetcoreapp3.1App6_cycles.exe», так как этот файл используется другим процессом. «App6_cycles (17496)» блокирует этот файл
А в конце выдает ошибку:
1>C:Program Files (x86)Microsoft Visual Studio2019CommunityMSBuildCurrentBinMicrosoft.Common.CurrentVersion.targets(4651,5): error MSB3027: не удалось скопировать «C:UsersusersourcereposApp6_cyclesApp6_cyclesobjDebugnetcoreapp3.1App6_cycles.exe» в «binDebugnetcoreapp3.1App6_cycles.exe». Превышено допустимое число повторных попыток (10). Произошел сбой. «App6_cycles (17496)» блокирует этот файл
Источник: ru.stackoverflow.com
Кнопка «Запуск без отладки» на панели инструментов в Visual Studio
Выводим кнопку запуска приложения в панель инструментов.
При написании консольных приложений в Visual Studio у начинающих возникает проблема, что при выводе результата приложение закрывается, не дав взглянуть на ответ.
Можно использовать system(«pause») , _getch() . Но можно использовать запуск приложения без отладки Ctrl + F5 . Тогда приложения после завершения работы не закроет окно консоли. Но данная кнопка отсутствует по умолчанию в панели инструментов:
В панели инструментов вызываем контекстное меню правой кнопкой:
Выводим кнопку запуска приложения в панель инструментов.
Выводим кнопку запуска приложения в панель инструментов.
Harrix
Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.
Источник: harrix.dev