Ich verwende Console.WriteLine () aus einer sehr einfachen WPF-Testanwendung, aber wenn ich die Anwendung über die Befehlszeile ausführe, wird nichts in die Konsole geschrieben. Weiß jemand, was hier los sein könnte?
Ich kann es reproduzieren, indem ich eine WPF-Anwendung in VS 2008 erstelle und einfach Console.WriteLine ("Text") an einer beliebigen Stelle hinzufüge, die ausgeführt wird. Irgendwelche Ideen?
Alles, was ich jetzt brauche, ist etwas so Einfaches wie Console.WriteLine (). Mir ist klar, dass ich log4net oder eine andere Protokollierungslösung verwenden könnte, aber ich brauche wirklich nicht so viele Funktionen für diese Anwendung.
Bearbeiten: Ich hätte daran denken sollen, dass Console.WriteLine () für Konsolenanwendungen ist. Na ja, keine dummen Fragen, oder? :-) Ich verwende jetzt nur System.Diagnostics.Trace.WriteLine () und DebugView.
Antworten:
Sie müssen ein Konsolenfenster manuell erstellen, bevor Sie tatsächlich Console.Write-Methoden aufrufen. Dadurch funktioniert die Konsole ordnungsgemäß, ohne den Projekttyp zu ändern (was für WPF-Anwendungen nicht funktioniert).
Hier ist ein vollständiges Beispiel für den Quellcode, wie eine ConsoleManager-Klasse aussehen könnte und wie sie zum Aktivieren / Deaktivieren der Konsole unabhängig vom Projekttyp verwendet werden kann.
Mit der folgenden Klasse müssen Sie nur
ConsoleManager.Show()
irgendwo schreiben, bevor SieConsole.Write
...quelle
SetConsoleCtrlHandler
Funktion, mit der Sie benachrichtigt werden können, wenn dasCTRL_CLOSE_EVENT
Ereignis eintritt, aber Sie können nichts damit anfangen. Es gibt nichts, was es Ihrer Anwendung ermöglicht, fortzufahren. Sie werden heruntergefahren. Wenn Sie Lust auf Hacking haben, können Sie wahrscheinlich den Windows-Nachrichtenhandler gegen den Konsolenprozess austauschen und einfach die WM_CLOSE-Nachricht löschen. Ich habe dies noch nie versucht, aber es könnte funktionieren. Es ist nur ein weiteres Fenster, aber wenn Sie diese Idee nicht unterhalten möchten, ist es wahrscheinlich besser, etwas anderes zu tun.Klicken Sie mit der rechten Maustaste auf das Projekt, "Eigenschaften", "Anwendung", ändern Sie "Ausgabetyp" in "Konsolenanwendung", und es wird auch eine Konsole angezeigt.
quelle
Sie können verwenden
Dies wird in das Studio "Ausgabe" in Visual Studio ausgegeben (beim Debuggen).
Stellen Sie sicher, dass die Diagnosebaugruppe enthalten ist:
quelle
Console.WriteLine
nicht für WPF-Anwendungen und nur für Befehlszeilen-Apps vorgesehen ist.Obwohl John Leidegren die Idee immer wieder abschießt, hat Brian Recht. Ich habe es gerade in Visual Studio zum Laufen gebracht.
Um klar zu sein, erstellt eine WPF-Anwendung standardmäßig kein Konsolenfenster.
Sie müssen eine WPF-Anwendung erstellen und dann den OutputType in "Konsolenanwendung" ändern. Wenn Sie das Projekt ausführen, sehen Sie ein Konsolenfenster mit Ihrem WPF-Fenster davor.
Es sieht nicht sehr hübsch aus, aber ich fand es hilfreich, da ich wollte, dass meine App über die Befehlszeile mit Feedback ausgeführt wird, und dann für bestimmte Befehlsoptionen das WPF-Fenster anzeige.
quelle
Es ist möglich, die für die Konsole bestimmte Ausgabe mithilfe von anzuzeigen Befehlszeilenumleitung können anzeigen .
Beispielsweise:
schreibt den gesamten Inhalt in die
output.txt
Datei.quelle
Alter Beitrag, aber ich bin darauf gestoßen. Wenn Sie also versuchen, etwas für die Ausgabe in einem WPF-Projekt in Visual Studio auszugeben, lautet die zeitgemäße Methode:
Schließen Sie dies ein:
Und dann:
quelle
Ich verwende Console.WriteLine () zur Verwendung im Ausgabefenster ...
quelle
Ich habe eine Lösung erstellt, die Informationen von varius post gemischt.
Es ist ein Formular, das eine Beschriftung und ein Textfeld enthält. Die Konsolenausgabe wird in das Textfeld umgeleitet.
Es gibt auch eine Klasse namens ConsoleView, die drei öffentliche Methoden implementiert: Show (), Close () und Release (). Die letzte Möglichkeit besteht darin, die Konsole offen zu lassen und die Schaltfläche Schließen zu aktivieren, um die Ergebnisse anzuzeigen.
Die Formulare heißen FrmConsole. Hier sind die XAML und der c # -Code.
Die Verwendung ist sehr einfach:
Zum Öffnen der Konsole. Verwenden:
Für die Ausgabe von Text an die Konsole.
Verwenden:
Zum Schließen der Konsole.
Lässt die Konsole geöffnet und aktiviert die Schaltfläche Schließen
XAML
Der Code des Fensters:
der Code der ConsoleView-Klasse
Ich hoffe, dieses Ergebnis ist nützlich.
quelle
Schauen Sie sich diesen Beitrag an, war sehr hilfreich für mich. Laden Sie das Codebeispiel herunter:
http://www.codeproject.com/Articles/335909/Embedding-a-Console-in-aC-Application
quelle
Soweit ich weiß, ist Console.WriteLine () nur für Konsolenanwendungen. Ich denke das ist dein Problem.
quelle