Почему Console.Writeline, Console.Write не работают в Visual Studio Express?


169

Я просто открываю консольное приложение и набираю

Console.WriteLine("Test");

Но окно вывода не показывает это. Я иду в окно вывода с Ctrl + W, O

Но когда я запускаю свою программу, ничего не происходит, я чокнутый или это не поддерживается в Visual Studio 2010 Express?


3
Как Leifсказано, он исчезает, прежде чем вы сможете увидеть это. ИспользованиеConsole.ReadKey()
Xaqron

Смотрите также stackoverflow.com/a/1583569/503688 для механизма для перенаправления вывода консоли в окно вывода отладки.
Йойо

Ответы:


301

Console.WriteLineзаписывает вывод в окно консоли, открытое вашим приложением (представьте, что черное окно с белым текстом, которое появляется при открытии командной строки.) Попробуйте System.Diagnostics.Debug.WriteLineвместо этого.


26
Отладочный вывод появляется в окне «Вывод» (Debug => Windows => Output). Мой не был открыт по умолчанию.
Апплус

1
Если в окне консоли нет вывода, также проверьте свойства приложения на вкладке «Отладка» «Параметры запуска», чтобы убедиться, что у вас нет аргументов командной строки, перенаправляющих вывод из консоли.
Чед Миллер

И используйте такой инструмент, как technet.microsoft.com/en-us/sysinternals/debugview.aspx DebugView (dbgview), чтобы получать сообщения отладки, поскольку они не будут отображаться в консоли cmd.
Роджер Дип

19

Зайдите в свойства вашего собственного проекта в Solution Explorerокне и выберите тип приложения, найдите Output Type и измените его значение на Console Application. Это сделает экран консоли помимо вашей формы. Если вы закроете экран консоли, ваша форма будет закрыта.

Удачи.


Сделал мой день! Я могу просмотреть мой запрос LINQ и записать его на консоль, что является быстрым дешевым способом получения правильных данных.
JustJohn

15

Возможно, консоль очищается. Пытаться:

Console.WriteLine("Test");
Console.ReadLine();

И, надеюсь, он останется там, пока вы не нажмете Enter.


15

Нет удовлетворительных ответов.

System.Diagnostics.Debug.WriteLine() будет писать сообщения в окно Output: debug, но каждый процесс под солнцем постоянно сбрасывает столько мусора в это окно, это все равно, что найти иголку в стоге сена, чтобы найти ВАШИ сообщения.

Console.WriteLine()не пишет ни в одно окно в Visual Studio. Я предполагаю, что он будет писать в консоль приложения только в том случае, если ваше приложение сначала создает консоль, т. Е. Если это консольное приложение.

Почему инструментарий делает простую задачу, заключающуюся в том, чтобы ваш код .cs кода на стороне сервера веб-приложений записывал некоторые отладочные сообщения в окно, забитое дерьмом, что делало практически невозможным поиск вашей информации?


6

Или вы можете отладить CTRL+F5это, откроет окно ConsoleWindow после последней выполненной строки, пока вы не нажмете клавишу.


8
Ну, это не совсем «отладка», это просто запуск приложения без подключения отладчика. : /
Дамиан

5

Это более чем вероятно, потому что вы использовали консоль в пространстве имен. Например, вот так:

namespace XYZApplication.Console
{
    class Program
    {
        static void Main(string[] args)
       {
            //Some code;             
       }
    }
}

Попробуйте удалить его из пространства имен или использовать вместо него полное пространство имен, т.е.

   System.Console.Writeline("abc");

1
У меня не было другой консоли в моем приложении, но добавление System.помогло. Спасибо.
Коленда

4

Окно вывода не консоль. Попробуйте методы вSystem.Diagnostics.Debug


4

В приложении Winforms оба метода:

System.Diagnostics.Debug.WriteLine("my string")

и

System.Console.WriteLine("my string")

написать в окно вывода.

В приложении AspNetCore System.Diagnostics.Debug.WriteLine("my string")пишет только в окно вывода.



2

Щелкните правой кнопкой мыши проект в обозревателе решений и нажмите «очистить».

Теперь беги F5

Убедитесь, что код такой, как показано ниже:

Console.WriteLine("TEST");
Console.ReadLine();

1

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

Использование System.Diagnostics.Debug.WriteLine()решило проблему.


1

Если вы используете Ctrl-F5 (запуск без отладки), окно консоли останется открытым с сообщением «Нажмите любую клавишу для продолжения». Это самый простой способ предотвратить закрытие окна консоли, чтобы вы могли видеть вывод консоли.


1

Перейдите в меню «Отладка» и выберите «Параметры» и снимите флажок «Перенаправить весь текст окна вывода в окно немедленного действия»


0

Console.Writeline() отображается в выходных данных отладки (Debug => Windows => Output).


7
Нет, System.Diagnostics.Debug.WriteLine пишет в Debug => Windows => Вывод, но не в Console.WriteLine
Виталий Корсаков

1
Человек, задающий вопрос, использует консольное приложение, где Console.WriteLine (), конечно, пишет в консоль, которая представляет собой черное окно приложения, похожее на окно DOS. Console.WriteLine () выполняет запись только в окно вывода отладки, если оно не является консольным приложением.
Питер Хубер

«Console.WriteLine () записывает только в окно вывода отладки, когда оно не является консольным приложением». Зачем?
sydd

0

Если вы разрабатываете приложение для командной строки, вы также можете использовать Console.ReadLine()в конце своего кода ожидание нажатия клавиши «Ввод» перед закрытием окна консоли, чтобы вы могли прочитать свои выходные данные.



0

Обходной путь, который я нашел:

Нажмите Ctrl + Alt + I или перейдите к «Отладочная вкладка» ---> «Windows» ---> «Немедленно».

В своем коде напишите:

Trace.WriteLine("This is one of the workaround");

0

Выход окна Visual Studio 2017 имеют меню под названием Show выход из , в моем случае ASP.NET Основной веб - сервер был вариант , чтобы выбрать, чтобы увидеть напечатанное, я наткнулся на этот вопрос , так как у меня было установлено , чтобы построить так Я не видел распечатанных строк во время выполнения.


0

Есть 2 возможные проблемы:

  • Во-первых, вы не использовали то, using Systemчто должно быть до написания кода, который использует «Системный класс», так какConsole.WriteLine()
  • Во-вторых, вы не запрограммировали, что произойдет после того, как на консоли отобразится «Тест»

Возможное решение будет:

using System;

namespace Test
{
    public static Main()
    {
        //Print to the console
        Console.WriteLine("Test");

        //Allow user to read output
        Console.ReadKey();
    }
}

Также стратегически важно кодировать Console.Write("Press any key to exit...");в строке, которая предшествует, Console.ReadKey();чтобы пользователь знал, что программа заканчивается, он / она должен нажать любую клавишу для выхода.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.