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 FerramentasOpçõesDepuraçã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.



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 FerramentasOpçõesDepuração → desmarque Enviar Saída para Imediato .







debugging