J'essaie d'écrire un message dans la fenêtre de sortie à des fins de débogage. J'ai cherché une fonction comme system.out.println("")
de Java. J'ai essayé Debug.Write
, Console.Write
et Trace.Write
. Cela ne donne pas d'erreur, mais n'imprime rien non plus.
Les options "Définir constante DEBUG" et "Définir constante TRACE" sont cochées.
Menu Outils → Options → Mise au point → "Rediriger tout le texte de la fenêtre de sortie vers la fenêtre Immédiate" L'option == n'est pas cochée .
Configuration: active (débogage)
Remarque: j'ai créé un projet avec l'assistant en tant qu '"application Windows Forms", le cas échéant. Je ne sais pas où regarder.
Ajoutez l'espace de noms System.Diagnostics
et vous pourrez ensuite utiliser Debug.WriteLine()
pour rapidement imprimer un message dans la fenêtre de sortie de l'EDI. Pour plus de détails, veuillez vous référer à ceux-ci:
Cela va écrire dans la fenêtre de sortie du débogage:
using System.Diagnostics;
Debug.WriteLine("Send to debug output.");
Utilisation:
System.Diagnostics.Debug.WriteLine("your message here");
Debug.WriteLine
est ce que vous cherchez.
Sinon, essayez ceci:
Menu Outils → Options → Débogage → décochez Envoyer la sortie vers Immédiat.
Pour moi, seul l’espace de noms Trace et non celui Debug a fonctionné:
System.Diagnostics.Trace.WriteLine("message");
Je travaille dans un projet C # sous Visual Studio 2010.
Vous cherchez peut-être
MessageBox.Show()
ou
Debug.Writeline()
L'appel
System.Diagnostics.Debug.WriteLine("message");
échoue lorsqu’on travaille avec . NET Core (V 1.0 ou 1.1).
Nous sommes supposés créer et utiliser un journal à partir de Microsoft.Extensions.Logging
, mais ce journal n'apparaît que dans la fenêtre de la console de la fenêtre contextuelle dotnet.exe, et non dans la fenêtre de sortie de Visual Studio.
Cela nécessite un framework tiers, à savoir Serilog , mais j'ai néanmoins trouvé qu'il s'agissait d'un very expérience sans heurts pour obtenir une sortie vers un endroit où je le peux. le voir.
Vous devez d’abord installer Serilog Trace sink . Une fois installé, vous devez configurer l’enregistreur comme suit:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(Vous pouvez définir un niveau minimum différent ou lui attribuer une valeur de configuration ou n’importe laquelle des fonctionnalités normales de Serilog. Vous pouvez également définir le consignateur Trace
sur un niveau spécifique pour remplacer les configurations, ou le faire de la manière que vous souhaitez. )
Ensuite, vous enregistrez 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 me connecter à 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é quant à la façon dont j'ai consommé la sortie, sans avoir à dupliquer tous mes appels vers 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 mon résultat à la fermeture. Lorsque 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'ils sont exécutés en tant que tâche planifiée.
L’essentiel, c’est que l’utilisation de Serilog à cette fin rendait très facile le transfert de messages vers une multitude de destinations, ce qui me permettait d’accéder toujours facilement à la sortie, quelle que soit la façon dont je l’avais exécuté.
Cela nécessite également une configuration et un code très minimes.
Ce qui suit a fonctionné pour moi dans Visual Studio 2015:
OutputDebugStringW(L"Write this to Output window in VS14.");
Lisez la documentation de OutputDebugStringW here .
Notez que cette méthode ne fonctionne que si vous déboguez votre code (debug mode
)
Ce n'est pas une réponse à la question initiale. Mais comme je trouvais cette question lorsque je cherchais un moyen de transférer de manière interactive des données d’objet, j’imaginais que d’autres pourraient tirer parti de cette alternative très utile.
J'ai finalement utilisé la fenêtre de commande et saisi la commande Debug.Print
, comme indiqué ci-dessous. Cela imprimait un objet de mémoire dans un format qui pouvait être copié sous forme de texte, ce qui était tout ce dont j'avais besoin.
> Debug.Print <item>
id: 1
idt: null
igad: 99
igbd: 99
gl_desc: "New #20"
te_num: "1-001-001-020"
Imprimer dans la fenêtre de sortie de Visual Studio:
Debug.Writeline();