txt - windows forms c# visual studio 2019
Escrevendo para a janela de saída do Visual Studio? (8)
Eu estou tentando escrever uma mensagem para a janela de saída para fins de depuração. Eu procurei por uma função como o system.out.println("")
do Java. Eu tentei Debug.Write
, Console.Write
e Trace.Write
. Não dá erro, mas também não imprime nada.
As opções "Definir constante de DEBUG" e "Definir constante de TRACE" são verificadas.
Menu Ferramentas → Opções → Depuração → "Redirecionar todos os textos da janela de saída para a janela imediata" não está marcada.
Configuração: Ativo (Debug)
Nota: Eu criei um projeto com o assistente como "Windows Forms Application" se relevante. Não tenho ideia de onde procurar.
A chamada
System.Diagnostics.Debug.WriteLine("message");
falha ao trabalhar com o .NET Core (V 1.0 ou 1.1).
Devemos criar e usar um criador de logs do Microsoft.Extensions.Logging
, mas esse log só aparece na janela do console popup dotnet.exe, não na janela Saída do Visual Studio.
Adicione o namespace System.Diagnostics
e, em seguida, você pode usar Debug.WriteLine()
para imprimir rapidamente uma mensagem para a janela de saída do IDE. Para mais detalhes, consulte estes:
Imprimir na janela de saída do Visual Studio:
Debug.Writeline();
Isso requer uma estrutura de terceiros, ou Serilog , Serilog , mas eu ainda acho que é uma experiência muito suave com a obtenção de saída para algum lugar eu posso ver isso.
Primeiro você precisa instalar o coletor de rastreio do Serilog. Uma vez instalado, você precisa configurar o logger da seguinte forma:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(Você pode definir um nível mínimo diferente ou defini-lo como um valor de configuração ou qualquer funcionalidade Serilog normal. Você também pode definir o registrador de Trace
como um nível específico para substituir as configurações ou como deseja fazê-lo.)
Então você apenas registra as mensagens normalmente e elas aparecem na sua janela de saída:
Logger.Information("Did stuff!");
Isso não parece tão importante, então deixe-me explicar algumas vantagens adicionais. O maior deles para mim foi que eu poderia logar simultaneamente na janela de saída e no console :
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
Isso me deu uma grande flexibilidade em termos de como eu consumi a saída, sem ter que duplicar todas as minhas chamadas para o Console.Write
com o Debug.Write
. Ao escrever o código, eu poderia executar minha ferramenta de linha de comando no Visual Studio sem medo de perder minha saída quando ela saísse. Quando eu tinha implantado e precisava depurar algo (e não tinha o Visual Studio disponível), a saída do console estava prontamente disponível para o meu consumo. As mesmas mensagens também podem ser registradas em um arquivo (ou qualquer outro tipo de coletor) quando ele está sendo executado como uma tarefa agendada.
A questão é que usar o Serilog para isso facilitou bastante o envio de mensagens para uma infinidade de destinos, garantindo que eu sempre possa acessar prontamente a saída, independentemente de como eu a executei.
Também requer configuração e código mínimos.
O seguinte funcionou para mim no Visual Studio 2015
:
OutputDebugStringW(L"Write this to Output window in VS14.");
Leia a documentação para OutputDebugStringW here .
Observe que esse método só funciona se você estiver depurando seu código ( debug mode
)
Para mim, apenas o namespace Trace, e não o Debug, funcionou:
System.Diagnostics.Trace.WriteLine("message");
Eu estou trabalhando em um projeto c # no Visual Studio 2010.
Você pode estar procurando
MessageBox.Show()
ou
Debug.Writeline()
Debug.WriteLine
é o que você está procurando.
Se não, tente fazer isso:
Menu Ferramentas → Opções → Depuração → desmarque Enviar Saída para Imediato .