Видите вывод консоли в Visual Studio 2010? - PullRequest
163 голосов
/ 14 марта 2011

Я пишу простую программу на C # с некоторыми выводами (Console.WriteLine("...");). Проблема в том, что при каждом запуске я не вижу вывод программы в окне вывода.

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

Как включить просмотр результатов программы?

Не думаю, что проблема в моем коде. Я попытался запустить простую программу, которая просто выводит строку и readline "ala hello world", и я все еще не могу увидеть какой-либо вывод. Проблема либо в том, что я искал вывод в неправильном месте, либо в Visual Studio отыгрывается.

Метод debug.write также не работает.

Используя debug.Write, все работает, хотя раньше этого не было. Либо что-то ссорилось со мной, прежде чем я перезапустил, или мне просто нужно сделать перерыв, в любом случае, теперь все хорошо. Спасибо всем за полезные комментарии =)

Ответы [ 9 ]

195 голосов
/ 14 марта 2011

Вы можете использовать метод System.Diagnostics.Debug.Write или System.Runtime.InteropServices для записи сообщений в окно вывода.

50 голосов
/ 14 марта 2011

Вот несколько вещей, которые нужно проверить:

  1. Для console.Write/WriteLine ваше приложение должно быть консольным приложением.(щелкните правой кнопкой мыши проект в обозревателе решений, выберите Свойства и посмотрите на комбинацию " Тип вывода " на вкладке "Приложение" - должно быть " Консольное приложение * 1011"* "(обратите внимание, если вам действительно нужно приложение для Windows или библиотека классов, не меняйте это на Консольное приложение, чтобы получить Console.WriteLine).

  2. Вы можете использовать System.Diagnostics.Debug.WriteLine для записи в окно вывода (чтобы показать окно вывода в VS, получил View | Output ) Обратите внимание, что эти записи будут происходить только в сборке, где условное условие DEBUG имеет видопределены (по умолчанию, отладочные сборки определяют это, а выпускные сборки - нет)

  3. Вы можете использовать System.Diagnostics.Trace.Writeline, если хотите иметь возможность записи в настраиваемые "слушатели" в неотладочные сборки. (по умолчанию это записывает в окно вывода в Visual Studio, как Debug.Writeline)

34 голосов
/ 14 марта 2011

Добавьте Console.Read(); в конце вашей программы. Это будет препятствовать закрытию приложения, и вы сможете увидеть его вывод таким образом.

Это консольное приложение, которое я только что выкопал, которое останавливается после обработки, но перед выходом:

class Program
{
    static void Main(string[] args)
    {
        DummyObjectList dol = new DummyObjectList(2);
        dol.Add(new DummyObject("test1", (Decimal)25.36));
        dol.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolxs = new XmlSerializer(typeof(DummyObjectList));
        dolxs.Serialize(Console.Out, dol);

        Console.WriteLine(string.Empty);
        Console.WriteLine(string.Empty);

        List<DummyObject> dolist = new List<DummyObject>(2);
        dolist.Add(new DummyObject("test1", (Decimal)25.36));
        dolist.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolistxs = new XmlSerializer(typeof(List<DummyObject>));
        dolistxs.Serialize(Console.Out, dolist);
        Console.Read(); //  <--- Right here
    }
}

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

21 голосов
/ 14 марта 2011

Нажмите Ctrl + F5 , чтобы запустить программу вместо F5 .

8 голосов
/ 02 марта 2012

System.Diagnostics.Debug.WriteLine() будет работать, но вы должны искать правильное место для вывода.В Visual Studio 2010 в строке меню нажмите Отладка -> Windows -> Вывод .Теперь в нижней части экрана, пристыкованного к списку ошибок, должна быть вкладка вывода.Щелкните по нему и дважды проверьте, что он показывает вывод из потока отладки в раскрывающемся списке.

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

0 голосов
/ 09 марта 2016

В Program.cs, между:

static int Main(string[] agrs)
{

и остальной код добавьте:

#if DEBUG
    int rtn = Main2(args);
    Console.WriteLine("return " + rtn);
    Console.WriteLine("ENTER to continue.");
    Console.Read();
    return rtn;
}

static int Main2(string[] args)
{
#endif
0 голосов
/ 14 июня 2015

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

Нажмите Просмотреть Вывод (или просто удерживайте Ctrl и нажмите W> O)

Вывод на консоль появится там, где ваш Список ошибок , Locals и Часы окна.

Примечание. Я использую Visual Studio 2015.

0 голосов
/ 13 октября 2013

Чтобы оставить консоль Windows открытой и не использовать другие методы вывода, кроме стандартного потока вывода, перейдите в «Имя вашего проекта» -> «Свойства» -> «Линкер» -> Система.выберите вкладку SubSytem и отметьте Консоль (/ SUBSYSTEM: CONSOLE).Как только вы это сделаете, всякий раз, когда вы захотите скомпилировать, используйте Ctrl + F5 (Начать без отладки), и ваша консоль будет оставаться открытой.:)

0 голосов
/ 03 июля 2012

Вы можете создать 2 маленьких метода, один из которых может быть вызван в начале программы, а другой - в конце.Вы также можете использовать Console.Read (), чтобы программа не закрывалась после последней строки записи.

Таким образом, вы можете определить, когда выполняются ваши функции, а также когда программа существует.

startProgram()
{
     Console.WriteLine("-------Program starts--------");
     Console.Read();
}


endProgram()
{
    Console.WriteLine("-------Program Ends--------");
    Console.Read();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...