Console.WriteLine wird im Ausgabefenster nicht angezeigt


83

Ich habe einige Console.WriteLineAnrufe zum Testen eingegeben, aber sie werden nicht im Ausgabefeld angezeigt.

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);

    }
}

Kann jemand helfen??


Das Problem wurde behoben, der Code wurde falsch geschrieben. Wurde nicht richtig kompiliert
sark9012

Antworten:


55

Wenn Sie diese Ausgabe in der Produktion verwenden möchten , verwenden Sie die Trace- Klassenmitglieder. Dadurch wird der Code portabel. Sie können verschiedene Arten von Listenern verkabeln und an das Konsolenfenster, das Debug-Fenster, die Protokolldatei oder was auch immer Sie möchten ausgeben.

Wenn dies nur ein temporärer Debugging-Code ist, mit dem Sie überprüfen, ob bestimmter Code ausgeführt wird oder die richtigen Werte aufweist, verwenden Sie die Debug- Klasse, wie Zach vorschlägt.

Wenn Sie die Konsole unbedingt verwenden müssen, können Sie eine Konsole in der Programmmethode anhängenMain .


108

ConsoleAusgaben im Konsolenfenster und in Winforms-Anwendungen zeigen das Konsolenfenster nicht an. Sie sollten in der Lage sein System.Diagnostics.Debug.WriteLine, Ausgaben an das Ausgabefenster in Ihrer IDE zu senden.

Bearbeiten: Haben Sie in Bezug auf das Problem überprüft, ob Ihr Anruf mainForm_Loadtatsächlich erfolgt? Sie können einen Haltepunkt am Anfang von setzen, um mainForm_Loadzu sehen. Wenn es nicht aufgerufen wird, vermute ich, dass mainForm_Loades nicht mit dem LoadEreignis verbunden ist.

Außerdem ist es effizienter und im Allgemeinen besser, sie zu überschreiben, On{EventName}anstatt sie {EventName}aus abgeleiteten Klassen heraus zu abonnieren (in Ihrem Fall überschreiben OnLoadstatt Load).


5
So was? System.Diagnostics.Debug.WriteLine ("einige tetttttttttt23423423423423423tttttttttttttttttttttttttt");
Sark9012

2
@ Luke - ja, aber du kannst Import System.Diagnosticses viel einfacher machen. Und ich bevorzuge es, die TraceKlasse dafür zu verwenden.
Joel Coehoorn

2
Gehen Sie in der oberen Navigationsleiste von Visual Studio zu Ansicht> Ausgabe, um die Werte von anzuzeigen System.Diagnostics.Debug.WriteLine.
Chad Kuehn

12

Wenn die Console.WriteLine("example text")Ausgabe im Fenster "Debug-Ausgabe" angezeigt werden soll, ändern Sie vorübergehend den Ausgabetyp Ihrer Anwendung von "Konsolenanwendung" in "Windows-Anwendung".

Wählen Sie in den Menüs Projekt + Eigenschaften und navigieren Sie zu Ausgabetyp: Dropdown, wechseln Sie zu Windows-Anwendung und führen Sie Ihre Anwendung aus

Natürlich sollten Sie es wieder ändern, um eine Konsolenanwendung zu erstellen, die außerhalb der IDE ausgeführt werden soll.

(Mit Visual Studio 2008 und 2010 getestet, sollte es auch in letzteren Versionen funktionieren.)


Dies ist eine bessere Möglichkeit, wenn Sie die Ergebnisse Ihrer Anwendung schnell kopieren möchten.
Mark Kram

2
Warum funktioniert Console.Writeline in einer Konsolenanwendung nicht? Das klingt sehr kontraintuitiv.
Sydney

^^ Ja, was? Das hat immer funktioniert. Und jetzt ist es nicht. Dies fühlt sich wie ein Fehler in Visual Studio an.
Triynko

2

Mit Console.WriteLine( "Test" );können Sie Protokollnachrichten in das Ausgabefenster (Menü Ansicht -> Ausgabe) in Visual Studio für ein Windows Forms / WPF-Projekt schreiben.

Ich bin jedoch auf einen Fall gestoßen, in dem es nicht funktionierte und nur System.Diagnostics.Debug.WriteLine( "Test" );funktionierte. Ich habe Visual Studio neu gestartet und wieder Console.WriteLine()angefangen zu arbeiten. Scheint ein Visual Studio-Fehler zu sein.


1

Wenn Sie eine Befehlszeilenanwendung entwickeln, können Sie auch Console.ReadLine()am Ende Ihres Codes auf den Tastendruck 'Enter' warten, bevor Sie das Konsolenfenster schließen, damit Sie Ihre Ausgabe lesen können. Sowohl die oben angegebenen Trace- als auch die Debug-Antworten sind jedoch bessere Optionen.


1

Deaktivieren Sie das Kontrollkästchen "Verwalteten Kompatibilitätsmodus verwenden" in

Extras => Optionen => Debugging => Allgemein

Es hat bei mir funktioniert.


Ich hatte dies beim Debuggen eines früheren cpp / cli-Projekts aktiviert und verursacht anscheinend dieses Problem sowie NLog, das sich nicht an der Konsole anmeldet.
Blackey

0

Wenn ein Problem auf dem Mac VS 2017 auftritt (mit dem ich konfrontiert war).

  1. Gehen Sie zu Projekt >> "Ihr Projektname".
  2. Ein Optionsfenster wird angezeigt
  3. Gehen Sie zu RUN >> Standardmenüoption
  4. Aktivieren Sie die Option "Auf externer Konsole ausführen" TRUE und sagen Sie OK

Führen Sie jetzt Ihren Anwendungscode aus.


-1

Alter Thread, aber in VS 2015 Console.WriteLine schreibt nicht in das Ausgabefenster, wenn "Visual Studio-Hosting-Prozess aktivieren" in den Projekteigenschaften -> Registerkarte "Debuggen" nicht aktiviert oder deaktiviert ist


-3

Wählen Sie Ansicht >> Ausgabe , um das Ausgabefenster zu öffnen.

Im Ausgabefenster sehen Sie das Ergebnis


1
Dies beantwortet die Frage nicht. Der Benutzer sagt ausdrücklich, dass er sich im OUTPUT-Fenster befindet (und dies daher ausgewählt hat).
Richard Duerr
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.