Está vendo a saída do console no Visual Studio 2010?

163

Estou escrevendo um programa C # simples com algumas saídas ( Console.WriteLine("...");). O problema é que, cada vez que o executo, não consigo ver a saída do programa na janela de saída.

A tag "output do programa" já está marcada e eu já redirecionei todas as saídas para a janela intermediária, mas sem sucesso.

Como habilito a visualização da saída do programa?

Não acho que o problema esteja no meu código. Tentei executar um programa simples que apenas gera uma string e uma linha de leitura "ala hello world" e ainda não consigo ver nenhuma saída. O problema é comigo procurando a saída no local errado ou o Visual Studio atuando.

O debug.writemétodo também não funciona.

Usando debug.Write, tudo funciona, embora não antes. Ou algo deu errado comigo antes de reiniciar ou só preciso fazer uma pausa, de qualquer forma, está tudo bem agora. Obrigado a todos pelos comentários úteis =)

r3x
fonte
7
O Visual Studio está cobrindo a janela do console. Mova-o para seu outro monitor.
Hans Passant

Respostas:

195

Você pode usar o método System.Diagnostics.Debug.Writeou System.Runtime.InteropServicespara gravar mensagens na janela de saída.

Richard Adnams
fonte
10
System.Diagnostics.Debug.Write (no caso de o OP não tem o namespace em jogo)
jonsca
4
Ah verdade, eu sou apenas a utilizada para batia período + controle :)
Richard Adams
jonsca: eu tenho um namespace em jogo e por que posso usar console.writeline, quero que meu programa escreva no console, não apenas por razões de teste?
R3x
2
Se o seu aplicativo for um aplicativo de console, você poderá usar o console.writeline para imprimir na janela do console ou, se o aplicativo for um aplicativo de formulário do Windows, poderá usar debug.write. Verifique este link para obter mais informações social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/…
Richard Adnams
1
interessante não sabia isso, e sim meu aplicativo é um Windows formam aplicativo, mas não, eu tentei usar o método Debug.Write mesmo problema, ele compila e tudo é peachy, mas sou incapaz de ver a qualquer saída
R3X
50

Aqui estão algumas coisas para verificar:

  1. Para console.Write/WriteLine, seu aplicativo deve ser um aplicativo de console. (clique com o botão direito do mouse no projeto no Solution Explorer, escolha Properties e veja a combinação " Output Type " na guia Application - deve ser " Console Application " (observe, se você realmente precisa de um aplicativo Windows ou de uma biblioteca de classes, não altere isso para o Console App apenas para obter o Console.WriteLine).

  2. Você pode usar System.Diagnostics.Debug.WriteLinepara gravar na janela de saída (para mostrar a janela de saída no VS, acesse Exibir | Saída ) Observe que essas gravações ocorrerão apenas em uma compilação na qual a condicional DEBUG é definida (por padrão, as compilações de depuração definem isso e compilações de versão não)

  3. Você pode usar System.Diagnostics.Trace.Writelinese quiser gravar em "listeners" configuráveis ​​em compilações sem depuração. (por padrão, isso grava na janela de saída no Visual Studio, da mesma maneira Debug.Writeline)

JMarsch
fonte
2
Eu não estava vendo minha saída, mas percebi que precisava executar o programa no modo de depuração (F5) em vez de Ctrl + Shift + F5. Obrigado!
Travis Heeter
System.Diagnostics.Trace.Writeline não parece funcionar, existe algo mais que preciso configurar para isso?
Travis Heeter
1
«1» - declaração falsa. Mono mostra a saída fina para todas as aplicações. «2» - ofc. O problema é que o método também não gera saídas para o terminal. Portanto, não é possível depurar um aplicativo no PC sem um IDE.
Hi-Angel
34

Adicione um Console.Read();no final do seu programa. Isso impedirá o fechamento do aplicativo e você poderá ver sua saída dessa maneira.

Este é um aplicativo de console que acabei de desenterrar que para após o processamento, mas antes de sair:

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
    }
}

Como alternativa, você pode simplesmente adicionar um ponto de interrupção na última linha.

Vincent Vancalbergh
fonte
2
Console.ReadLine funciona tão bem que você só precisa pressionar enter para continuar onde Read lê qualquer tecla padrão.
Richard Adnams 14/03
suas janelas uma forma aplicativo e Debug.Write nem método Console.WriteLine parecem funcionar
R3X
Euhm, por que você está produzindo no console a partir de um aplicativo Windows Form? Sugiro a saída em um formulário ou caixa de discagem. Ou fazer uma aplicação de console ...
Vincent Vancalbergh
sim que já foi apontada para mim, é um apenas um erro estúpido da minha parte, ainda graças a cabeça para cima =)
R3X
O Console.Read () faz com que a janela do console obtenha foco e, portanto, apareça na frente do VS. Se você simplesmente colocar um ponto de interrupção após um Console.Write (), a janela Console mostrará sua saída, mas não terá foco, portanto poderá não estar visível.
Nigel
21

Pressione Ctrl+ F5para executar o programa em vez de F5.

waqasahmed
fonte
1
Ctrl + F5 inicia o aplicativo sem depuração para você não ver nada na janela de saída.
Richard Adnams
6
Isso funcionou para mim; Eu só queria ver o que o programa estava produzindo, nenhuma das saídas do console estava aparecendo. Isso fez com que ele mantivesse a janela do console aberta após a execução, para que eu pudesse ver a saída.
Davidpcj
+1, é esse, se você realmente não deseja depurar (mostra o console e permite ler a saída).
mlvljr
8

System.Diagnostics.Debug.WriteLine()funcionará, mas você deve procurar o local certo para obter a saída. No Visual Studio 2010, na barra de menus, clique em Debug -> Windows -> Output . Agora, na parte inferior da tela, acoplado ao lado da sua lista de erros, deve haver uma guia de saída. Clique nele e verifique novamente se está mostrando a saída do fluxo de depuração na lista suspensa.

PS: Acho que a janela de saída aparece em uma nova instalação, mas não me lembro. Caso contrário, ou se você o fechou acidentalmente, siga estas instruções.

lordcheeto
fonte
0

Para manter o console do Windows aberto e não usar outros métodos de saída em vez do cout do fluxo de saída padrão, vá para Nome do seu projeto -> Propriedades -> Linker -> Sistema.

Uma vez lá, selecione a guia SubSytem e marque Console (/ SUBSYSTEM: CONSOLE). Depois de fazer isso, sempre que quiser compilar, use Ctrl + F5 (Iniciar sem depuração) e seu console permanecerá aberto. :)

Alex
fonte
Eu acho que é aplicável ao C ++, não ao C # como na pergunta.
Dmitry Fedorkov
0

Eu me deparo com isso com frequência por algum motivo e não consigo entender por que essa solução não foi mencionada:

Clique em ExibirSaída (ou apenas segure Ctrle pressione W> O)

A saída do console aparece onde estão as janelas Lista de erros , Locals e Watch .

Nota: estou usando o Visual Studio 2015.

Metodista
fonte
A janela Saída mencionada parece ter sido gerada pelo depurador, pois possui muitas linhas relacionadas aos conjuntos sendo carregados, threads iniciando e parando, etc. Isso é diferente da saída do console.
31716 PeterVermont
0

O Visual Studio está, por si só, cobrindo a janela do console; tente minimizar a janela do Visual Studio, eles são desenhados um sobre o outro.

opsfunny
fonte
-1

Em Program.cs, entre:

static int Main(string[] agrs)
{

e o restante do seu código, adicione:

#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
George
fonte
Por favor, adicione uma descrição, como o seu código resolve o problema.
22916 Koopakiller
-4

Você pode criar dois métodos pequenos, um que pode ser chamado no início do programa e o outro no final. Você também pode usar Console.Read (), para que o programa não feche após a última linha de gravação.

Dessa forma, você pode determinar quando sua funcionalidade é executada e também quando o programa existe.

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


endProgram()
{
    Console.WriteLine("-------Program Ends--------");
    Console.Read();
}
Joseph Kachere
fonte
Não vejo como essa resposta traz novas informações à pergunta, já que a possibilidade Console.Read () já foi mencionada anteriormente.
ForceMagic 10/10