Antworten:
Console.WriteLine schreibt entweder beim Debuggen oder beim Release in den Standardausgabestream. Debug.WriteLine schreibt in die Trace-Listener in der Listeners- Auflistung, jedoch nur, wenn sie im Debug ausgeführt werden. Wenn die Anwendung in der Release-Konfiguration kompiliert wird, werden die Debug-Elemente nicht in den Code kompiliert.
Beim Debug.WriteLineSchreiben an alle Trace-Listener in der Listeners- Auflistung ist es möglich, dass dies an mehreren Stellen ausgegeben wird (Visual Studio-Ausgabefenster, Konsole, Protokolldatei, Drittanbieteranwendung, die einen Listener registriert (ich glaube, DebugView tut dies) ), etc.).
Console.WriteLine()ist für Programme im Konsolenmodus gedacht. Eine nette Funktion des Visual Studio-Hosting-Prozesses lässt die Ausgabe im Visual Studio-Ausgabefenster angezeigt werden, während für Prozesse ohne Konsole debuggt wird. Dies ist beim Debuggen sehr nützlich. Beachten Sie jedoch, dass Sie diesen Code entfernen (oder mit einem #ifdef DEBUG umschließen) sollten, wenn Sie bereit sind, den Release-Build zu erstellen. Andernfalls wird Ihrem Programm unnötiger Overhead hinzugefügt. Dies macht es für die Debug-Ablaufverfolgung weniger als ideal.
Debug.WriteLine()generiert Ablaufverfolgungsinformationen, wenn Sie mit der DEBUG-Bedingung #defined erstellen. Welches ist standardmäßig im Debug-Build aktiviert. Wo die Ausgabe endet, kann in der Datei app.exe.config konfiguriert werden. Wenn diese Konfiguration nicht überschrieben wird, stellt .NET automatisch eine Instanz der DefaultTraceListener-Klasse bereit. Es sendet den Debug.WriteLine () -Text mit der Windows OutputDebugString () -API-Funktion an den Debugger. Der Visual Studio-Debugger zeigt an, dass dies genau wie Console.WriteLine () im Ausgabefenster angezeigt wird.
Ein klarer Vorteil von Debug.WriteLine () ist, dass im Release-Build kein Overhead generiert wird und die Aufrufe effektiv entfernt werden. Die zusammengesetzte Formatierung wird jedoch nicht unterstützt. Dazu benötigen Sie String.Format (). Für die Debug-Ablaufverfolgung sollte die Debug-Klasse Ihre Wahl sein.
Wenn Sie Console.WriteLine ausschließlich zum Debuggen verwenden, verwenden Sie besser Debug.WriteLine .
Wenn Sie Ihrem Benutzer eine Nachricht anzeigen möchten, verwenden Sie Console.WriteLine .
Debug.WriteLine dient nur zum Debuggen Ihrer Anwendung. Im Release-Modus werden Ihre Debug-Anweisungen ignoriert.
Eine andere Verwendung einer Konsolenanwendung ist das Testen privater Assemblys. Anstelle des herkömmlichen Ansatzes, eine Art GUI-Testkabel zum Testen der kompilierten Version der DLL zu erstellen, können Sie die DLL einfach als Konsolenanwendung neu erstellen und von / in die Konsole eingeben / ausgeben. Ich habe festgestellt, dass diese Technik schneller ist als das Erstellen eines GUI-Testgeschirrs.
OutputDebugString(undDebugPrint) protokolliert wurden . DasDefaultTraceListenerschreibt anOutputDebugString, weshalb DebugView die Ausgabe sieht. msdn.microsoft.com/en-us/library/…