Console.WriteLine не отображается в окне вывода


87

Я отправил несколько Console.WriteLineвызовов для проверки, но они не отображаются в поле вывода?

public static ArrayList myDeliveries = new ArrayList();

public mainForm(){
    InitializeComponent();
}

private void mainForm_Load(object sender, EventArgs e){

    if (!File.Exists("../../MealDeliveries.txt")){
        MessageBox.Show("File not found!");
        return;
    }

    using (StreamReader sr = new StreamReader("../../MealDeliveries.txt")){
        //first line is delivery name 
        string strDeliveryName = sr.ReadLine();
        Console.WriteLine("Test content");

        while (strDeliveryName != null){

            //other lines 
            Delivery d = new Delivery(
                strDeliveryName, 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine()
            );

            mainForm.myDeliveries.Add(d);

            //check for further values
            strDeliveryName = sr.ReadLine();
        }
    }

    displayDeliveries();


}


private void displayDeliveries(){

    lstDeliveryDetails.Items.Clear();
    Console.WriteLine("Test content");
    Console.WriteLine(mainForm.myDeliveries.Count);
    foreach (Delivery d in mainForm.myDeliveries){
        lstDeliveryDetails.Items.Add(d.DeliveryName);

    }
}

Кто-нибудь может помочь ??


Решил проблему, неправильно написал код. Некорректная компиляция
sark9012

Ответы:


57

Если вы собираетесь использовать этот вывод в производственной среде, используйте члены класса Trace . Это делает код переносимым, вы можете подключать различные типы слушателей и выводить их в окно консоли, окно отладки, файл журнала или что угодно еще.

Если это всего лишь временный код отладки, который вы используете для проверки того, что определенный код выполняется или имеет правильные значения, тогда используйте класс Debug, как предлагает Зак .

Если вам абсолютно необходимо использовать консоль, вы можете присоединить консоль в Mainметоде программы .


109

Consoleвыходы в окно консоли и приложения Winforms не отображают окно консоли. Вы должны иметь возможность использовать System.Diagnostics.Debug.WriteLineдля отправки вывода в окно вывода в вашей среде IDE.

Изменить: Что касается проблемы, подтвердили ли вы, что вам mainForm_Loadдействительно звонят? Вы можете разместить точку останова в начале, mainForm_Loadчтобы увидеть. Если он не вызывается, я подозреваю, что mainForm_Loadон не подключен к Loadсобытию.

Кроме того, более эффективно и, как правило, лучше переопределять, On{EventName}а не подписываться на {EventName}производные классы (в вашем случае переопределение OnLoadвместо Load).


5
Как это? System.Diagnostics.Debug.WriteLine ("немного tetttttttttt23423423423423423ttttttttttttttttttttt");
sark9012

2
@Luke - да, но вы можете Import System.Diagnosticsсделать это намного проще. И я предпочитаю использовать Traceдля этого класс.
Джоэл Кохорн

2
На верхней панели навигации Visual Studio выберите «Просмотр»> «Вывод», чтобы просмотреть значения из System.Diagnostics.Debug.WriteLine.
Chad Kuehn

13

Если вы хотите, чтобы Console.WriteLine("example text")вывод отображался в окне вывода отладки, временно измените тип вывода вашего приложения с консольного приложения на приложение Windows.

В меню выберите Project + Properties и перейдите к типу вывода: раскрывающийся список, перейдите в приложение Windows, затем запустите приложение.

Конечно, вы должны изменить его обратно для создания консольного приложения, предназначенного для работы вне IDE.

(протестировано с Visual Studio 2008 и 2010, ожидается, что он также будет работать в последних версиях)


Это лучший способ, если вы хотите быстро скопировать результаты своего приложения.
Марк Крам

2
Почему Console.Writeline не работает в консольном приложении? Это звучит очень противоречиво.
sydd 07

^^ Ага, что? Это всегда работало. А теперь это не так. Это похоже на ошибку в Visual Studio.
Трийнко

4

Использование Console.WriteLine( "Test" );позволяет записывать сообщения журнала в окно вывода (меню «Просмотр» -> «Вывод») в Visual Studio для проекта Windows Forms / WPF.

Однако я столкнулся со случаем, когда он не работал, а только System.Diagnostics.Debug.WriteLine( "Test" );работал. Я перезапустил Visual Studio и Console.WriteLine()снова начал работать. Кажется, это ошибка Visual Studio.


А также; сборка в VS переключает окно вывода на сборку; так что теперь мне нужно щелкнуть вывод, изменить элемент в «Показать вывод из» И пролистать десятки других сообщений.
Кристиан

1

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


1

Попробуйте снять флажок «Использовать управляемый режим совместимости» в

Инструменты => Параметры => Отладка => Общие

У меня это сработало.


У меня это было при отладке предыдущего проекта cpp / cli и, по-видимому, вызывает эту проблему, а также NLog не ведет журнал на консоли.
Blackey

0

Когда проблема возникает на Mac VS 2017 (с чем я столкнулся).

  1. Перейдите в Project >> Параметры "Имя вашего проекта".
  2. Появится окно опций
  3. Перейдите в RUN >> Параметр меню по умолчанию
  4. Установите флажок "Запускать на внешней консоли" как ИСТИНА и скажите ОК.

Запустите код вашего приложения сейчас.


-1

Старый поток, но в VS 2015 Console.WriteLine не записывает в окно вывода, если флажок «Включить процесс размещения Visual Studio» не установлен или он отключен в свойствах проекта -> вкладка «Отладка»


-3

Выберите вид >> Вывод, чтобы открыть окно вывода.

В окне вывода вы можете увидеть результат


1
Это не отвечает на вопрос. Пользователь конкретно говорит, что он находится в окне ВЫХОДА (и, следовательно, выбрал его).
Ричард Дуэрр
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.