Console.WriteLine non viene visualizzato nella finestra di output


87

Ho inserito alcune Console.WriteLinechiamate da testare, ma non vengono visualizzate nella casella di output?

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

    }
}

Qualcuno può aiutare ??


Risolto il problema, ha scritto il codice nel modo sbagliato. La compilazione non è stata corretta
sark9012

Risposte:


57

Se intendi utilizzare questo output in produzione, utilizza i membri della classe Trace . Questo rende il codice portabile, puoi collegare diversi tipi di listener e visualizzarli nella finestra della console, nella finestra di debug, nel file di registro o in qualsiasi altra cosa tu voglia.

Se questo è solo un codice di debug temporaneo che stai usando per verificare che un determinato codice sia in esecuzione o abbia i valori corretti, usa la classe Debug come suggerisce Zach .

Se è assolutamente necessario utilizzare la console, è possibile collegare una console nel Mainmetodo del programma .


110

Consolegli output nella finestra della console e le applicazioni Winforms non mostrano la finestra della console. Dovresti essere in grado di utilizzare System.Diagnostics.Debug.WriteLineper inviare l'output alla finestra di output nel tuo IDE.

Modifica: per quanto riguarda il problema, hai verificato che il tuo mainForm_Loadè stato effettivamente chiamato? Puoi inserire un punto di interruzione all'inizio di mainForm_Loadper vedere. Se non viene chiamato, sospetto che mainForm_Loadnon sia collegato Loadall'evento.

Inoltre, è più efficiente e generalmente meglio eseguire l'override On{EventName}invece di sottoscrivere {EventName}da classi derivate (nel tuo caso sovrascrivere OnLoadinvece di Load).


5
Come questo? System.Diagnostics.Debug.WriteLine ("some tetttttttttt23423423423423423ttttttttttttttttttttt");
sark9012

2
@Luke - sì, ma puoi Import System.Diagnosticsrenderlo molto più semplice. E preferisco usare la Traceclasse per questo.
Joel Coehoorn

2
Nella barra di navigazione superiore di Visual Studio vai a Visualizza> Output per vedere i valori da System.Diagnostics.Debug.WriteLine.
Chad Kuehn

13

Se si desidera che l' Console.WriteLine("example text")output venga visualizzato nella finestra Debug Output, modificare temporaneamente il tipo di output dell'applicazione da applicazione console a applicazione Windows.

Dai menu scegli Progetto + Proprietà e vai a Tipo di output: menu a discesa, passa a Applicazione Windows, quindi esegui l'applicazione

Ovviamente dovresti cambiarlo di nuovo per creare un'applicazione console progettata per essere eseguita al di fuori dell'IDE.

(testato con Visual Studio 2008 e 2010, dovrebbe funzionare anche in queste ultime versioni)


Questo è un modo migliore se stai cercando di copiare rapidamente i risultati della tua applicazione.
Mark Kram

2
Perché Console.Writeline non funziona in un'applicazione console? Sembra molto contro intuitivo.
sydd

^^ Già, cosa? Questo ha sempre funzionato. E ora non lo è. Sembra un bug in Visual Studio.
Triynko

4

Using Console.WriteLine( "Test" );è in grado di scrivere messaggi di log nella finestra di output (menu Visualizza -> Output) in Visual Studio per un progetto Windows Forms / WPF.

Tuttavia, ho riscontrato un caso in cui non funzionava e funzionava solo System.Diagnostics.Debug.WriteLine( "Test" );. Ho riavviato Visual Studio e ho ricominciato Console.WriteLine()a lavorare. Sembra essere un bug di Visual Studio.


E anche; costruire cose in VS cambia la finestra di output in build; quindi ora devo fare clic su output, modificare l'elemento in "mostra output da" E scorrere decine di altri messaggi.
Christian

1

Se stai sviluppando un'applicazione a riga di comando, puoi anche utilizzare Console.ReadLine()alla fine del codice per attendere la pressione del tasto "Invio" prima di chiudere la finestra della console in modo da poter leggere l'output. Tuttavia, entrambe le risposte Trace e Debug pubblicate sopra sono opzioni migliori.


1

Prova a deselezionare la casella di controllo "Usa modalità di compatibilità gestita" in

Strumenti => Opzioni => Debug => Generale

Ha funzionato per me.


Avevo questo durante il debug di un precedente progetto cpp / cli e apparentemente causa questo problema e NLog non accede alla console.
Blackey

0

Quando il problema si verifica su Mac VS 2017 (che ho affrontato).

  1. Vai a Progetto >> Opzioni "Nome del tuo progetto".
  2. Apparirà una finestra di opzioni
  3. Vai a ESEGUI >> opzione di menu predefinita
  4. Spunta l'opzione "Esegui su console esterna" TRUE e pronuncia OK

Esegui subito il codice dell'applicazione.


-1

Vecchio thread, ma in VS 2015 Console.WriteLine non scrive nella finestra di output se "Abilita il processo di hosting di Visual Studio" non è selezionato o è disabilitato in Proprietà progetto -> scheda Debug


-3

Selezionare Visualizza >> Output per aprire la finestra di output.

Nella finestra di output, puoi vedere il risultato


1
Questo non risponde alla domanda. L'utente dice specificamente di trovarsi nella finestra OUTPUT (e quindi di averlo selezionato).
Richard Duerr
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.