Wenn Sie eine Konsolenanwendung in Java mit Eclipse ausführen, wird die Ausgabe in einem Textfeld in der IDE selbst angezeigt, anstatt dass eine Konsole wie in Visual Studio angezeigt wird. Dies ist praktisch, da ich den darin geschriebenen Text auch nach dem Beenden des Programms noch gut nutzen kann, da er erst gelöscht wird, wenn ich ihn erneut ausführe. Ist es möglich, so etwas mit Visual Studio zu erreichen? Ich weiß das anstatt zu tun
System.Console.WriteLine(str);
ich kann
System.Diagnostics.Debug.WriteLine(str);
Aber es ist nicht ganz dasselbe, da im Ausgabefenster viel "Müll" angezeigt wird, wie bei allen geladenen Symbolen und dergleichen.
Ist es noch besser, alles in der IDE selbst erledigen zu lassen, wenn Sie Ihre Anwendung ausführen, anstatt die Konsole auszuführen?
c#
visual-studio
console
verschlungenes Elysium
quelle
quelle
Antworten:
Klicken Sie im Dialogfeld "Extras" -> "Visual Studio-Optionen" -> "Debuggen" -> "Alle Texte des Ausgabefensters in das Sofortfenster umleiten".
quelle
Im Visual Studio Optionen Dialog -> Debuggen -> Überprüfen Sie die „Redirect Alle Ausgabefenster Text auf dem Direkt - Fenster“. Gehen Sie dann zu Ihren Projekteinstellungen und ändern Sie den Typ von "Konsolenanwendung" in "Windows-Anwendung". Zu diesem Zeitpunkt öffnet Visual Studio kein Konsolenfenster mehr und die Ausgabe wird in Visual Studio in das Ausgabefenster umgeleitet. Sie können jedoch nichts "Kreatives" tun, z. B. eine Schlüssel- oder Texteingabe anfordern oder die Konsole löschen - es werden Laufzeitausnahmen angezeigt.
quelle
Console.ReadKey()
einfach lächerlich sein kann!Output type
meine Anwendung von der Windows-Anwendung auf die Konsole zurückzusetzen, ist das Konsolenfenster beim Ausführen meiner Anwendung nicht mehr zu sehen. Ich kann die Anwendung debuggen und derMain
Einstiegspunkt wird ebenfalls getroffen. Ich habe auch die in diesem Beitrag erwähnte Optionseinstellung zurückgesetzt, aber ohne Erfolg. Ich verwende die VS 2017 Community Edition. Ich habe mein Konsolenfenster verloren (schluchzend).Verwenden
System.Diagnostics.Trace
Abhängig davon, welche Listener Sie anhängen, kann die Trace-Ausgabe gleichzeitig an das Debug-Fenster, die Konsole, eine Datei, eine Datenbank oder alle gesendet werden. Die Möglichkeiten sind buchstäblich endlos, da die Implementierung Ihres eigenen TraceListener äußerst einfach ist.
quelle
Es ist Zeit, die neuesten Versionen für Visual Studio zu überprüfen, Leute. Die am meisten vorgeschlagene Lösung, die für einige von Ihnen zuvor nicht funktioniert hat, funktioniert jetzt möglicherweise.
In Visual Studio 2017 ( Release Version 15.4.2 und höher) hat go
Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window
für mich funktioniert.Einige Hinweise: 1. Um das Sofortfenster anzuzeigen, stellen Sie sicher, dass Sie sich im Debugging- Modus befinden. 2. Es sollten jetzt 3 weitere Debugging-Tools zur Verfügung stehen, nämlich Call Stack, Haltepunkte und Befehlsfenster (siehe unten):
Die besten Wünsche!
quelle
Sie können eine Wrapper-Anwendung erstellen, die Sie ausführen, anstatt Ihre echte App direkt auszuführen. Die Wrapper-Anwendung kann stdout abhören und alles an Trace umleiten. Ändern Sie dann die Ausführungseinstellungen, um Ihren Wrapper zu starten, und übergeben Sie den Pfad zur Ausführung der realen App.
Sie können den Debugger auch automatisch an den neuen Prozess anhängen lassen, wenn ein Debugger an den Wrapper angehängt ist.
quelle
Ich weiß, dass dies nur eine andere Antwort ist, aber ich dachte, ich würde etwas für die neuen Webentwickler aufschreiben, die möglicherweise über den Teil "Ändern zu einer Windows-Anwendung" verwirrt sind, da ich standardmäßig eine MVC-Anwendung in Visual Studio 2013 denke Standardmäßig wird ein Ausgabetyp der Klassenbibliothek verwendet.
Meine Webanwendung ist standardmäßig als Ausgabetyp "Klassenbibliothek" festgelegt. Das musst du nicht ändern. Alles, was ich tun musste, war den Vorschlägen zu folgen, indem ich zu Extras> Optionen> Debuggen> Den gesamten Text des Ausgabefensters zum Sofortfenster umleiten ging. Ich habe dann den
System.Diagnostics.Trace
Vorschlag von Joel Coehoorn oben verwendet.quelle
Eine einfache Lösung, die für mich funktioniert, um mit Konsolenfähigkeiten (ReadKey, String mit Format und Argument usw.) zu arbeiten und die Ausgabe anzuzeigen und zu speichern:
Ich schreibe TextWriter, der an
Console
und zu schreibtTrace
und denConsole.Out
durch ihn ersetzt.Wenn Sie Dialog -> Debugging -> Aktivieren Sie das Kontrollkästchen "Text des gesamten Ausgabefensters in das unmittelbare Fenster umleiten", wird es im sofortigen Fenster angezeigt und ist ziemlich sauber.
mein Code: am Anfang meines Codes:
und die Klasse:
Hinweis: Ich überschreibe genau das, was ich brauchte. Wenn Sie also andere Typen schreiben, sollten Sie mehr überschreiben
quelle
bezüglich der
System.Diagnostics.Debug
Erzeugung von viel "Junk" im Ausgabefenster: Sie können dies deaktivieren, indem Sie mit der rechten Maustaste in das Ausgabefenster klicken. ZB gibt es einen Punkt "Module Load Messages", den Sie deaktivieren möchten, und einen Punkt "Program Output", den Sie behalten möchten.quelle
Sie haben drei Möglichkeiten, dies zu tun, aber es ist nicht trivial. Die Hauptidee aller IDEs ist, dass alle die Eltern der untergeordneten (Debug-) Prozesse sind. In diesem Fall ist es möglich, mit Standardeingabe-, Ausgabe- und Fehlerbehandlungsroutine zu manipulieren. IDEs starten also untergeordnete Anwendungen und leiten sie in das interne Ausgabefenster um. Ich kenne eine weitere Möglichkeit, aber sie wird in Zukunft kommen
quelle
Wenn Sie eine Ausgabe von Console.WriteLine benötigen und der Text des gesamten Ausgabefensters in das Sofortfenster umleiten nicht funktioniert und Sie die Ausgabe von Tests aus dem integrierten Test-Explorer mit NUnit.Framework kennen müssen, ist unser Problem bereits bei VS 2017 gelöst ::
Beispiel aus C # In Depth von Jon Skeet: Dies erzeugt diese Ausgabe im Text Explorer:
Wenn wir rechts unter Verstrichene Zeit auf Blaue Ausgabe klicken, wird Folgendes angezeigt:
Die Standardausgabe ist unsere gewünschte Ausgabe, die von Console.WriteLine erstellt wird.
Es funktioniert für die Konsole und für Windows Form-Anwendungen bei VS 2017, jedoch nur für die Ausgabe, die beim Debuggen oder Ausführen für den Test Explorer generiert wurde. Auf jeden Fall ist dies mein Hauptbedarf an Console.WriteLine-Ausgabe.
quelle
Stattdessen können Sie die Ausgabe in einem Testergebnis sammeln.
Sie können keine Eingabe bereitstellen, aber Sie können problemlos mehrere Tests mit unterschiedlichen Befehlszeilenargumenten bereitstellen, wobei jeder Test die Ausgabe sammelt.
Wenn Ihr Ziel das Debuggen ist, können Sie mit geringem Aufwand ein wiederholbares Debugging-Szenario anbieten.
quelle
Schritt 1: Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen und legen Sie den Ausgabetyp als Fensteranwendung fest
Schritt 2: Debuggen -> Optionen ..--> Debuggen (Erweitern) -> Allgemein -> Leiten Sie den gesamten Text des Ausgabefensters in das Direktfenster um
quelle