Console.WriteLine não aparece na janela de saída

87

Coloquei algumas Console.WriteLinechamadas para teste, mas elas não estão aparecendo na caixa de saída?

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

    }
}

Alguém pode ajudar ??

sark9012
fonte
Resolvido o problema, escrevi o código da maneira errada. Não foi compilado corretamente
sark9012

Respostas:

57

Se você pretende usar essa saída na produção, use os membros da classe Trace . Isso torna o código portátil, você pode conectar diferentes tipos de ouvintes e enviar para a janela de console, janela de depuração, arquivo de log ou qualquer outra coisa que desejar.

Se for apenas um código de depuração temporário que você está usando para verificar se determinado código está sendo executado ou tem os valores corretos, use a classe Debug como Zach sugere.

Se for absolutamente necessário usar o console, você pode anexar um console ao Mainmétodo do programa .

Aaronaught
fonte
109

Consoleas saídas para a janela do console e aplicativos WinForms não mostram a janela do console. Você deve ser capaz de usar System.Diagnostics.Debug.WriteLinepara enviar a saída para a janela de saída em seu IDE.

Edit: Em relação ao problema, você verificou que mainForm_Loadestá realmente sendo chamado? Você pode colocar um ponto de interrupção no início de mainForm_Loadpara ver. Se não está sendo chamado, suspeito que mainForm_Loadnão esteja ligado ao Loadevento.

Além disso, é mais eficiente e geralmente melhor substituir em On{EventName}vez de assinar a {EventName}partir de classes derivadas (no seu caso, substituir em OnLoadvez de Load).

Zach Johnson
fonte
5
Como isso? System.Diagnostics.Debug.WriteLine ("some tetttttttttt23423423423423423ttttttttttttttttttttttttt");
sark9012
2
@Luke - sim, mas você pode Import System.Diagnosticspara torná-lo muito mais simples. E eu prefiro usar a Traceclasse para isso.
Joel Coehoorn
2
Na barra de navegação superior do Visual Studio, vá para Exibir> Saída para ver os valores de System.Diagnostics.Debug.WriteLine.
Chad Kuehn
13

Se você deseja que a Console.WriteLine("example text")saída apareça na janela Depurar saída, altere temporariamente o tipo de saída de seu aplicativo de aplicativo de console para aplicativo do Windows.

Nos menus, escolha Projeto + Propriedades e navegue até Tipo de saída: suspenso, mude para Aplicativo do Windows e execute seu aplicativo

Claro que você deve alterá-lo de volta para construir um aplicativo de console destinado a ser executado fora do IDE.

(testado com Visual Studio 2008 e 2010, espera-se que funcione nas últimas versões também)

Davervw
fonte
Essa é a melhor maneira se você deseja copiar rapidamente os resultados de seu aplicativo.
Mark Kram
2
Por que Console.Writeline não funciona em um aplicativo de console? Isso soa muito contra-intuitivo.
sydd
^^ Sim, o quê? Isso sempre funcionou. E agora não é. Isso parece um bug no Visual Studio.
Triynko
4

Usando Console.WriteLine( "Test" );é capaz de gravar mensagens de log na janela de saída (Menu Exibir -> Saída) no Visual Studio para um projeto Windows Forms / WPF.

No entanto, encontrei um caso em que não estava funcionando e apenas System.Diagnostics.Debug.WriteLine( "Test" );estava funcionando. Eu reiniciei o Visual Studio e Console.WriteLine()comecei a trabalhar novamente. Parece ser um bug do Visual Studio.

Dhiren Sarup
fonte
E também; construir coisas no VS muda a janela de saída para construir; então agora tenho que clicar na saída, alterar o item em 'mostrar saída de' E percorrer dezenas de outras mensagens.
Christian
1

Se estiver desenvolvendo um aplicativo de linha de comando, você também pode usar Console.ReadLine()no final do seu código para aguardar o pressionamento da tecla 'Enter' antes de fechar a janela do console para que possa ler a saída. No entanto, as respostas de rastreamento e depuração postadas acima são opções melhores.

paul jerman
fonte
1

Tente desmarcar a caixa de seleção “Use Managed Compatibility Mode” em

Ferramentas => Opções => Depuração => Geral

Funcionou para mim

slava.stackoverflow
fonte
Eu usei isso ao depurar um projeto cpp / cli anterior e aparentemente causa esse problema, bem como o NLog não logar no console.
Blackey
0

Quando o problema está acontecendo no Mac VS 2017 (que enfrentei).

  1. Vá para Projeto >> opções de "Nome do seu projeto".
  2. Uma janela de opções irá aparecer
  3. Vá para RUN >> opção de menu padrão
  4. Marque a opção "Executar em console externo" TRUE e diga OK

Execute o código do seu aplicativo agora.

VSB
fonte
-1

Thread antigo, mas no console do VS 2015.WriteLine não grava na janela de saída se "Habilitar o processo de hospedagem do Visual Studio" não estiver marcado ou estiver desabilitado em Propriedades do projeto -> guia Depurar

Blak RUSH
fonte
-3

Selecione view >> Output para abrir a janela de saída.

Na janela de saída, você pode ver o resultado

Vinoth Joseph
fonte
1
Isso não responde à pergunta. O usuário diz especificamente que está na janela OUTPUT (e, portanto, a selecionou).
Richard Duerr