web-dev-qa-db-fra.com

Écriture dans la fenêtre de sortie de Visual Studio

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 OutilsOptionsMise 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.

551
previous_developer

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:

690
Bhargav Bhat

Cela va écrire dans la fenêtre de sortie du débogage:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");
146
veight

Utilisation:

System.Diagnostics.Debug.WriteLine("your message here");
79
Luqman
Debug.WriteLine

est ce que vous cherchez.

Sinon, essayez ceci:

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

53
Micah Armantrout

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.

21
Zac

Vous cherchez peut-être

MessageBox.Show()

ou

Debug.Writeline()
16
dansasu11

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.

8
Paul Gorbas

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.

4
jpmc26

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 .

enter image description here Notez que cette méthode ne fonctionne que si vous déboguez votre code (debug mode)

1
Mona Jalal

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"
1
djabraham

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

Debug.Writeline();
0
Amir Twito