Frage

Wenn Sie eine Konsolenanwendung in Java mit Eclipse zu tun, sehe ich die Ausgabe Wesen gesetzt in einem Textfeld in dem IDE selbst, anstatt eine Konsole mit wie in Visual Studio Aufspringen. Das ist praktisch, als auch nach dem das Programm verlassen hat, habe ich noch gute Verwendung des Textes machen können, die in es geschrieben wurde, da es nicht gelöscht wird erhalten, bis ich es wieder laufen. Ist es möglich, so etwas mit Visual Studio zu erreichen? Ich weiß, dass anstatt das zu tun

System.Console.WriteLine(str);

Ich kann tun,

System.Diagnostics.Debug.WriteLine(str);

aber es ist nicht ganz dasselbe, wie Sie eine Menge „Müll“ im Ausgabefenster zu bekommen, wie alle geladenen Symbole und so weiter.

Noch besser ist es möglich, alles in der IDE selbst getan zu haben, wenn Sie Ihre Anwendung ausführen, anstatt die Konsole laufen zu haben?

War es hilfreich?

Lösung

In den Extras -> Visual Studio Optionen Dialog -> Debuggen. -> Überprüfen Sie die "Redirect Alle Ausgabefenster Text in das Direktfenster"

Andere Tipps

In der Visual Studio Optionen Dialog -> Debuggen -> Überprüfen Sie die "Redirect Alle Ausgabefenster Text auf dem Direkt-Fenster". Dann gehen Sie zu den Projekteinstellungen und die Art ändern von „Console Application“ auf „Windows-Anwendung“. An diesem Punkt Visual Studio öffnen, nicht ein Konsolenfenster mehr, und die Ausgabe an das Ausgabefenster in Visual Studio umgeleitet wird. Sie können jedoch nichts „kreativ“ tun, wie anfordernden Schlüssel oder Texteingabe oder Löschen der Konsole -. Sie werden Runtime-Ausnahmen erhalten

Verwenden Sie System.Diagnostics.Trace

Je nachdem, was die Zuhörer Sie anhängen können Trace-Ausgabe auf das Debug-Fenster gehen, die Konsole, eine Datei, eine Datenbank oder alles auf einmal. Die Möglichkeiten sind nahezu endlos, wie Sie Ihre eigenen Tracelistener ist extrem einfach zu implementieren.

Stellen Sie sicher, die Kontrolle der " Redirect Alle Output ... " Checkbox in den Debug-Einstellung Fenster:

Sie konnten eine Wrapper-Anwendung erstellen, dass Sie nicht direkt ausgeführt Ihre reale Anwendung ausgeführt werden. Die Wrapper-Anwendung kann auf stdout und Umleitung alles Trace hören. Dann die Lauf Einstellungen ändern, um Ihre Wrapper zu starten und auf dem Weg in der realen Anwendung zu laufen weiter.

Sie können auch die Wrapper haben den Debugger an den neuen Prozess automatisch anhängen, wenn ein Debugger an den Wrapper angebracht ist.

Ich weiß, das ist nur ein andere Antwort, aber ich dachte, dass ich etwas nach unten für den neuen Web-Entwickler schreiben würde, die über den „Wechsel zu einer Windows-Anwendung“ Teil verwechselt bekommen könnten, weil ich denke, dass eine Standard-MVC-Anwendung in Visual Studio 2013 standardmäßig einen Ausgabetyp der Klassenbibliothek.

My Web Application standardmäßig wird als Ausgangstyp eingestellt „Klassenbibliothek“. Sie müssen nicht ändern. Alles, was ich tun musste, war die Vorschläge gehen auf Extras> Optionen> Debuggen> Redirect alle Ausgabefenster Text in dem Direkt-Fenster folgen. Ich habe dann den System.Diagnostics.Trace Vorschlag oben von Joel Coehoorn.

Eine einfache Lösung, die funktioniert für mich, an der Arbeit mit Konsole Fähigkeit (ReadKey, String mit Format und arg usw.) und um zu sehen, und speichern Sie die Ausgabe:

Ich schreibe Textwriter, dass Schreiben auf Console und Trace und ersetzen Sie die Console.Out mit ihm.

Wenn Sie Dialog verwenden -> Debuggen -> Überprüfen Sie die „Redirect Alle Ausgabefenster Text in das Direktfenster“ Sie es in dem Direkt-Fenster bekommen und ziemlich sauber

.

meinen Code: in Anfang meines Code:

   Console.SetOut(new TextHelper());

und die Klasse:

public class TextHelper : TextWriter
    {
        TextWriter console;

        public TextHelper() {
            console = Console.Out;
        }

        public override Encoding Encoding { get { return this.console.Encoding; } }
        public override void WriteLine(string format, params object[] arg)
        {
            string s = string.Format(format, arg);
            WriteLine(s);
        }
        public override void Write(object value)
        {
            console.Write(value);
            System.Diagnostics.Trace.Write(value);
        }

        public override void WriteLine(object value)
        {
            Write(value);
            Write("\n");
        }
        public override void WriteLine(string value)
        {
            console.WriteLine(value);
            System.Diagnostics.Trace.WriteLine(value);

        }

    }

Hinweis: I außer Kraft setzen genau das, was ich brauchte, so dass, wenn Sie andere Arten schreiben sollten Sie außer Kraft setzen mehr

Sie können stattdessen die Ausgabe in einem Testergebnis sammeln.

Sie können nicht eingegeben liefern, aber Sie können leicht mehrere Tests mit unterschiedlichen Befehlszeilenargumente, jeder Test liefern die Ausgabe zu sammeln.

Wenn Ihr Ziel ist das Debuggen, das ist ein geringer Aufwand Weg, um eine wiederholbare Fehlersuche Szenario anbieten zu können.

namespace Commandline.Test
{
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    [TestClass]
    public class CommandlineTests
    {
        [TestMethod]
        public void RunNoArguments()
        {
            Commandline.Program.Main(new string[0]);
        }
    }
}

Es ist Zeit, die neueste Version / s für Visual Studio, Leute zu überprüfen. Die vorgeschlagene Lösung, die nicht jetzt einige von euch vor Macht Arbeit nicht funktioniert.

In Visual Studio 2017 ( Release Version 15.4.2 und oben), geht auf Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window hat für mich gearbeitet.

Ein paar Hinweise: 1. Um die Direkt-Fenster, stellen Sie sicher, dass Sie in Debuggen Modus zu sehen. 2. Es soll jetzt zur Verfügung 3 weitere Debugging-Tools zur Verfügung, nämlich Call Stack, Haltepunkte und Befehlsfenster, wie unten dargestellt:

Die besten Wünsche!

Schritt 1: Rechtsklick auf dem Projektnamen in Projektmappen-Explorer macht dann den Ausgangstyp als Fenster Application

Schritt 2: Debug -> Optionen ..--> Debuggen (Expand) -> Allgemein -> Redirect Alle Ausgabefenster Text auf die Direkt-Fenster

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top