[C#] Écriture dans la fenêtre de sortie de Visual Studio?


Answers

Cela écrira dans la fenêtre de sortie de débogage:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");
Question

J'essaie d'écrire un message dans la fenêtre de sortie à des fins de débogage. J'ai cherché une fonction comme Java system.out.println("") . J'ai essayé Debug.Write , Console.Write et Trace.Write . Il ne donne pas d'erreur, mais il n'imprime rien non plus.

Les options "Définir la constante DEBUG" et "Définir la constante TRACE" sont cochées.

Menu OutilsOptionsDébogage → L' option "Rediriger tout le texte de la fenêtre de sortie vers la fenêtre immédiate" n'est pas cochée.

Configuration: active (débogage)

Remarque: J'ai créé un projet avec l'assistant en tant que "Application Windows Forms", le cas échéant. Je n'ai aucune idée d'où regarder.




Imprimez dans la fenêtre de sortie de Visual Studio:

Debug.Writeline();



    Debug.WriteLine

est ce que vous cherchez.

Sinon, essayez ceci:

Menu OutilsOptionsDébogage → décochez Envoyer la sortie à Immédiat .




Cela nécessite un cadre tiers, à savoir Serilog , mais j'ai quand même trouvé que c'était une expérience très agréable pour obtenir des résultats à un endroit que je peux voir.

Vous devez d'abord installer l' évier Trace de Serilog. Une fois installé, vous devez configurer l'enregistreur comme ceci:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(Vous pouvez définir un niveau minimum différent ou le définir sur une valeur de configuration ou n'importe quelle fonctionnalité Serilog normale.Vous pouvez également définir l'enregistreur de Trace à un niveau spécifique pour remplacer les configurations, ou ce que vous voulez faire.)

Ensuite, vous venez de journaliser les messages normalement et ils apparaissent dans votre fenêtre de sortie:

Logger.Information("Did stuff!");

Cela ne semble pas être un gros problème, alors laissez-moi vous expliquer quelques avantages supplémentaires. Le plus important pour moi était que je pouvais simultanément enregistrer à la fois la fenêtre de sortie et la console :

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

Cela m'a donné une grande flexibilité en termes de consommation de sortie, sans avoir à dupliquer tous mes appels à Console.Write avec Debug.Write . Lors de l'écriture du code, je pouvais exécuter mon outil de ligne de commande dans Visual Studio sans craindre de perdre ma sortie à sa sortie. Quand je l'avais déployé et que j'avais besoin de déboguer quelque chose (et que Visual Studio n'était pas disponible), la sortie de la console était facilement disponible pour ma consommation. Les mêmes messages peuvent également être enregistrés dans un fichier (ou tout autre type de récepteur) lorsqu'il est exécuté en tant que tâche planifiée.

Le fait est que l'utilisation de Serilog pour cela rendait très facile le transfert de messages vers une multitude de destinations, m'assurant que je pouvais toujours accéder facilement à la sortie quelle que soit la façon dont je l'ai exécuté.

Il nécessite également une configuration et un code très minimes.




Pour moi, seul l'espace de noms Trace et non celui de débogage fonctionnait:

System.Diagnostics.Trace.WriteLine("message");

Je travaille dans un projet C # sous Visual Studio 2010.