162 votes

Avoir la sortie d'une application console dans Visual Studio au lieu de la console

Lorsque j'exécute une application console en Java avec Eclipse, la sortie est placée dans une zone de texte dans l'IDE lui-même, au lieu d'avoir une console qui s'affiche comme dans Visual Studio. C'est pratique, car même après la sortie du programme, je peux toujours faire bon usage du texte qui y a été écrit, puisqu'il n'est pas effacé jusqu'à ce que je le relance. Est-il possible de réaliser une telle chose avec Visual Studio ? Je sais qu'au lieu de faire

System.Console.WriteLine(str);

Je peux le faire.

System.Diagnostics.Debug.WriteLine(str);

mais ce n'est pas tout à fait la même chose, car vous obtenez beaucoup de "déchets" dans la fenêtre de sortie, comme tous les symboles chargés et autres.

Mieux encore, est-il possible de tout faire dans l'IDE lui-même, lorsque vous exécutez votre application, au lieu de faire tourner la console ?

0 votes

Quelle version de VS utilisez-vous ?

0 votes

Disposez-vous d'un volet de résultats de tests ?

0 votes

Je ne l'ai jamais remarqué. Je vais vérifier. Je devrais l'avoir ?

89voto

SharpSteve Points 154

Dans la boîte de dialogue Outils -> Options Visual Studio -> Débogage -> Cochez la case "Rediriger tout le texte de la fenêtre de sortie vers la fenêtre immédiate".

92 votes

J'ai coché cette case mais j'obtiens toujours un popup de la console et rien dans la fenêtre "Output" (Debug, Test, Build,..) ou la "Immediate Window".

6 votes

@EvenLisle vous devez changer le type d'application en application Windows, comme dans l'exemple suivant La réponse de stolsvik . L'option mentionnée dans cette réponse était de toute façon activée par défaut pour moi.

4 votes

Que signifie exactement "Rediriger tout le texte de la fenêtre de sortie vers la fenêtre immédiate" ? Utilisez différents contextes si nécessaire. Je ne comprends pas ce qu'est la "fenêtre immédiate".

56voto

stolsvik Points 2049

Dans le Visual Studio Dialogue des options -> Débogage -> Cochez la case "Rediriger tout le texte de la fenêtre de sortie vers la fenêtre immédiate". Ensuite, allez dans les paramètres de votre projet et changez le type de "Console Application" en "Windows Application". À ce stade, Visual Studio n'ouvre plus de fenêtre de console, et la sortie est redirigée vers la fenêtre de sortie de Visual Studio. Cependant, vous ne pouvez pas faire quoi que ce soit de "créatif", comme demander une entrée de touche ou de texte, ou effacer la console - vous obtiendrez des exceptions d'exécution.

39 votes

Je trouve cela particulièrement maladroit. Quelle est, je me le demande, la raison d'être de VS ? Tous les IDE modernes devraient avoir la possibilité d'avoir un panneau à l'intérieur de l'IDE lui-même qui se comporte comme une console pour les entrées et les sorties. (se gratte la tête)

16 votes

La question indique clairement que pour un "application console" et le changer en quelque chose d'autre juste pour le débogage, où je ne peux même pas Console.ReadKey() est tout simplement ridicule !

1 votes

Je ne sais pas pourquoi mais quand j'ai essayé de rétablir le Output type de mon application de l'application Windows à la console, la fenêtre de la console n'est plus visible lorsque je lance mon application. Je peux déboguer l'application et Main Le point d'entrée est également touché. J'ai également inversé le paramètre d'option mentionné dans ce post mais sans succès. J'utilise VS 2017 community edition. J'ai perdu ma fenêtre de console (sanglotant).

8voto

Joel Coehoorn Points 190579

Utilisez System.Diagnostics.Trace

En fonction des écouteurs que vous attachez, la sortie de la trace peut être envoyée à la fenêtre de débogage, à la console, à un fichier, à une base de données ou à tout à la fois. Les possibilités sont littéralement infinies, car la mise en œuvre de votre propre TraceListener est extrêmement simple.

3voto

vittore Points 8364

Ce n'est pas tout à fait la même chose, mais lisez l'article du blog. Saviez-vous que vous pouvez faire afficher le texte de votre outil externe dans la fenêtre de sortie ? - #204 .

1voto

Samuel Neff Points 35554

Vous pouvez créer une application de type "wrapper" que vous exécutez au lieu d'exécuter directement votre application réelle. L'application wrapper peut écouter stdout et tout rediriger vers Trace. Modifiez ensuite les paramètres d'exécution pour lancer votre wrapper et indiquez le chemin d'accès à l'application réelle à exécuter.

Vous pouvez également demander au wrapper d'attacher automatiquement le débogueur au nouveau processus si un débogueur est attaché au wrapper.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X