Ao fazer um aplicativo de console em Java com Eclipse, vejo a saída sendo colocada em uma caixa de texto no próprio IDE, em vez de ter um console aparecendo como no Visual Studio. Isso é útil, pois, mesmo após a saída do programa, ainda posso fazer bom uso do texto que foi escrito nele, pois ele não é apagado até que eu o execute novamente. É possível conseguir algo assim com o Visual Studio? Eu sei que ao invés de fazer
System.Console.WriteLine(str);
eu posso fazer
System.Diagnostics.Debug.WriteLine(str);
mas não é exatamente a mesma coisa, pois você recebe um monte de "lixo" na janela Saída, como todos os símbolos carregados e tal.
Melhor ainda, é possível ter tudo feito no próprio IDE, quando você executa o aplicativo, em vez de o console estar em execução?
c#
visual-studio
console
elísio devorado
fonte
fonte
Respostas:
Na caixa de diálogo Ferramentas -> Opções do Visual Studio -> Depuração -> Marque a opção "Redirecionar todo o texto da janela de saída para a janela imediata".
fonte
Na caixa de diálogo Opções do Visual Studio -> Depuração -> marque a opção "Redirecionar todo o texto da janela de saída para a janela imediata". Em seguida, vá para as configurações do seu projeto e altere o tipo de "Aplicativo de console" para "Aplicativo do Windows". Nesse ponto, o Visual Studio não abre mais uma janela do console e a saída é redirecionada para a janela Saída no Visual Studio. No entanto, você não pode fazer nada "criativo", como solicitar entrada de chave ou texto ou limpar o console - você obterá exceções de tempo de execução.
fonte
Console.ReadKey()
é ridículo!Output type
aplicativo novamente do Windows Application para o Console, a janela do console não será exibida quando executo o aplicativo. Eu sou capaz de depurar o aplicativo e oMain
ponto de entrada também está sendo atingido. Também reverti a configuração da opção mencionada neste post, mas sem sucesso. Estou usando o VS 2017 community edition. Perdi a janela do console (soluçando).Usar
System.Diagnostics.Trace
Dependendo dos ouvintes que você anexa, a saída de rastreio pode ir para a janela de depuração, o console, um arquivo, banco de dados ou todos de uma vez. As possibilidades são literalmente infinitas, pois a implementação do seu próprio TraceListener é extremamente simples.
fonte
Chegou a hora de verificar os últimos lançamentos do Visual Studio, pessoal. A solução mais sugerida que não funcionou para alguns de vocês antes pode funcionar agora.
No Visual Studio 2017 ( versão 15.4.2 e superior), o ir
Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window
funcionou para mim.Algumas notas: 1. Para ver a janela imediata, verifique se você está no modo de depuração . 2. Agora deve haver mais 3 ferramentas de depuração disponíveis, a saber, Pilha de chamadas, Pontos de interrupção e Janela de comando, como mostrado abaixo:
Muitas felicidades!
fonte
Você pode criar um aplicativo wrapper que você executa em vez de executar diretamente seu aplicativo real. O aplicativo wrapper pode ouvir stdout e redirecionar tudo para o Trace. Em seguida, altere as configurações de execução para iniciar seu wrapper e passar o caminho para o aplicativo real a ser executado.
Você também pode fazer com que o wrapper anexe automaticamente o depurador ao novo processo se um depurador estiver anexado ao wrapper.
fonte
Sei que essa é apenas outra resposta, mas pensei em escrever algo para os novos desenvolvedores da Web, que podem ficar confusos com a parte "Alterar para um aplicativo do Windows", porque acho que por padrão um aplicativo MVC no Visual Studio 2013 o padrão é um Tipo de saída da biblioteca de classes.
Meu aplicativo Web, por padrão, é definido como um tipo de saída de "Biblioteca de classes". Você não precisa mudar isso. Tudo o que eu precisava fazer era seguir as sugestões de ir para Ferramentas> Opções> Depuração> Redirecionar todo o texto da Janela de Saída para a Janela Imediata. Eu então usei a
System.Diagnostics.Trace
sugestão de Joel Coehoorn acima.fonte
Uma solução simples que funciona para mim, trabalhar com a capacidade do console (ReadKey, String with Format e arg etc) e ver e salvar a saída:
Eu escrevo TextWriter que escreve para
Console
e paraTrace
e substitui oConsole.Out
por ele.se você usar Diálogo -> Depuração -> Marque o "Redirecionar todo o texto da janela de saída para a janela imediata", você o obtém na Janela imediata e é bastante limpo.
meu código: no começo do meu código:
e a classe:
Nota: Eu substituo exatamente o que eu precisava. Se você escrever outros tipos, substitua mais
fonte
em relação à
System.Diagnostics.Debug
produção de "lixo" na janela Saída: você pode desativá-lo clicando com o botão direito do mouse na janela de saída. Por exemplo, existe um item "Module Load Messages" que você deseja desativar e um item "Program Output" que você deseja manter.fonte
Você tem três possibilidades para fazer isso, mas não é trivial. A idéia principal de todos os IDEs é que todos eles são os pais dos processos filhos (depuração). Nesse caso, é possível manipular com entrada, saída e manipulador de erros padrão. Portanto, os IDEs iniciam aplicativos filhos e redirecionam para a janela de saída interna. Eu sei de mais uma possibilidade, mas ela virá no futuro
fonte
Se você precisar de saída do Console.WriteLine e o texto da janela Redirecionar todas as saídas para a janela imediata não funcionar, você precisará conhecer a saída dos testes do Integrated Test Explorer, usando o NUnit.Framework, nosso problema já foi resolvido no VS 2017 :
Exemplo extraído de C # In Depth por Jon Skeet: Isso produz esta saída no Text Explorer:
Quando clicamos em Saída azul, em Tempo decorrido, à direita, e produz isso:
Saída padrão é a saída desejada, produzida por Console.WriteLine.
Ele funciona para o console e para aplicativos de formulário do Windows no VS 2017, mas apenas para a saída gerada para o Test Explorer em Debug ou Run; de qualquer maneira, essa é minha principal necessidade de saída do Console.WriteLine.
fonte
Em vez disso, você pode coletar a saída em um resultado de teste.
Você não pode fornecer entrada, mas pode facilmente fornecer vários testes com argumentos de linha de comando diferentes, cada um coletando a saída.
Se seu objetivo é depurar, é uma maneira de baixo esforço de oferecer um cenário de depuração repetível.
fonte
Etapa 1: Clique com o botão direito do mouse no Nome do projeto no Solution Explorer e, em seguida, faça o Tipo de saída como Aplicativo da janela
Etapa 2: Depurar -> Opções ..--> Depuração (Expandir) -> Geral -> Redirecionar Todo o Texto da Janela de Saída para a Janela Imediata
fonte