D'où vient la Console.WriteLine aller en Debug?
J'ai trouvé cette question, mais ce que je veux savoir, c'est différent - la sortie de la Console.WriteLine aller n'importe où lorsque le débogage? Je sais que pour aller à la fenêtre de sortie, je devrais devez Déboguer.WriteLine() ou d'autres méthodes, mais d'où vient le standard de la Console.WriteLine() go?
Modifier
Lors du débogage, vous ne voyez pas la fenêtre de console noire /test de connexion de sorte que le vraie question est comment puis-je accéder à/afficher cette sortie pendant le débogage?
Vous devez vous connecter pour publier un commentaire.
La console peut rediriger la sortie textwriter. Si vous implémentez un textwriter qui écrit pour le Diagnostic.Débogage, vous êtes tous ensemble.
Voici un textwriter qui écrit dans le débogueur.
Car il utilise des Diagnostics.Le débogage adhèrent à vos paramètres du compilateur qu'il doit écrire toute sortie ou pas. Cette sortie peut également être vu dans Sysinternals DebugView.
Voici comment l'utiliser:
Si vous voulez voir la sortie de Sysinternals DebugView lorsque vous êtes compilation en mode Release, vous pouvez utiliser un TextWriter qui écrit à la OutputDebugString API. Il pourrait ressembler à ceci:
NullStream
, qui est défini comme "un Flux avec Un pas de magasin de sauvegarde.". Toutes les méthodes ne font rien ou ne retournent rien. C'est une classe interne àStream
. Le code suivant est tiré de Microsoft code source.Fondamentalement, lorsque l'un des
Console
méthodes d'écriture est d'appeler la première fois, un appel est effectué vers la fonction Windows APIGetStdHandle
pour la "sortie standard". Si pas de poignée est retourné uneNullStream
est créé et utilisé.Samuel réponse est bonne et fournit des renseignements généraux. Pour rediriger la Console de sortie, quel que soit le type de projet, l'utilisation
Console.SetOut(New System.IO.StreamWriter("C:\ConsoleOutput.txt"))
, qui est un simple exemple.Diriger Console de Debug et Trace de Fichier
Pour répondre directement à votre question. Utiliser le
ConsoleTraceListener
et unStreamWriter
de diriger tous les trois sorties dans un fichier. J'utilise la suite pour le développement seulement.NullStream
Debug et Release ne pas contrôler si oui ou non vous obtenez une fenêtre de console. Qui est contrôlée par le projet du type de sortie. (Propriétés -> Application -> Type de Sortie).
L'Application de la Console, vous obtenez une fenêtre de console qui permettra de visualiser et de recevoir des données à partir de la fenêtre dans l'Erreur, Dans, et des cours d'eau dans le Système.Console.
Le Système.Console de classe expose un certain nombre de propriétés et de méthodes pour interagir avec ses torrents, même si vous ne pouvez pas le voir. Notamment: Erreur, In, Out, SetError(), SetIn(), Sera(), et les méthodes Read et Write.
La meilleure solution pour moi a été de changer de Console.WriteLine() à System.Diagnostics.Debug.WriteLine().
Par exemple:
Vous pouvez ensuite afficher vos erreurs comme un objet dans la fenêtre de sortie.
Je vais deuxième James sur celui-ci.
http://www.csharp411.com/console-output-from-winforms-application
décrit brute détail (si diriger la sortie vers un fichier est assez bien alors vous pouvez facilement utiliser amissico de la méthode). La plupart des méthodes décrites par ressembler à ceux décrits dans http://dslweb.nwnexus.com/~ast/dload/guicon.htm
Évolution de votre projet pour une "console" projet aurait un effet similaire, comme mentionné. Cheers!
Il va à la console (sortie standard) ou dans le flux de la console est réglé.
Visual Studio lance des programmes de Windows (
/target:winexe
) avec le stdin/stdout/stderr redirigé aux canaux Nommés. L'autre extrémité de chaque tube est détenue par le VS débogueur et rien lire sur stderr/stdout est affiché dans la Fenêtre de Sortie de Débogage. Par conséquent,Console.Write
auto-apparaît comme par magie dans le VS la sortie de Débogage. Notez que cela ne se produit pas si vous joindre déjà commencé le processus (depuis la redirection astuce ne peut être fait au moment du lancement).Lors du lancement de programmes de la console (
/target:exe
) cette redirection ne se produit pas si leConsole.Write
va tothe réelle de la console (ou là où l'stdout
est redirigé).Je ne pouvais pas trouver quelque chose que les documents de ce comportement, c'est juste ma conclusion de l'enquête comment VS lance et permet de déboguer les applications.
Même dans une application WinForms, vous pouvez créer une fenêtre de console, mais vous aurez à passer par P/Invoke pour appeler un Win32 méthode directement. Voir http://pinvoke.net/default.aspx/kernel32/AllocConsole.html
De la Console.writeline() va à une fenêtre de console: la noire de commande /invite de commandes dos.