¿Cuál es la diferencia entre Console.WriteLine () vs Debug.WriteLine ()?

¿Cuál es la diferencia entre Console .WriteLine() vs Debug .WriteLine() ?

Console.WriteLine escribe en la secuencia de salida estándar, ya sea en depuración o en versión. Debug.WriteLine escribe en los detectores de seguimiento en la colección Listeners , pero solo cuando se ejecuta en depuración. Cuando la aplicación se comstack en la configuración de lanzamiento, los elementos de depuración no se comstackrán en el código.

Como Debug.WriteLine escribe en todos los escuchas de seguimiento en la colección Listeners , es posible que esto se publique en más de un lugar (ventana de salida de Visual Studio, consola, archivo de registro, aplicación de terceros que registra un oyente (creo DebugView hace esto), etc.).

Console.WriteLine() está diseñado para progtwigs en modo consola. Una buena característica del proceso de alojamiento de Visual Studio hace que su salida aparezca en la ventana Salida de Visual Studio mientras se depura para procesos que no tienen una consola. Eso es muy útil durante la depuración, pero tenga cuidado de que debe eliminar este código (o envolverlo con un #ifdef DEBUG ) cuando esté listo para crear la versión de lanzamiento. De lo contrario, agregará una sobrecarga innecesaria a su progtwig. Esto lo hace menos ideal para el seguimiento de depuración.

Debug.WriteLine() genera información de seguimiento si comstack con el DEPART #defined condicional. Que está activado por defecto en la comstackción de depuración. Donde termina la salida se puede configurar en el archivo app.exe.config . Si esta configuración no se reemplaza, .NET proporciona automáticamente una instancia de la clase DefaultTraceListener . Envía el texto Debug.WriteLine() con la función de la API OutputDebugString() Windows al depurador. El depurador de Visual Studio hace que aparezca en la ventana de resultados, al igual que Console.WriteLine() .

Una clara ventaja de Debug.WriteLine() es que no genera gastos indirectos en la versión de lanzamiento, las llamadas se eliminan de manera efectiva. Sin embargo, no es compatible con el formato compuesto, necesitará String.Format() para eso. Para el seguimiento de depuración, la clase Debug debe ser su elección.

Si su propósito de usar Console.WriteLine es únicamente para la depuración, es mejor que use Debug.WriteLine .

Si desea mostrar un mensaje a su usuario, debe usar Console.WriteLine .

Debug.WriteLine solo tiene la finalidad de depurar su aplicación. En el modo de lanzamiento, sus instrucciones de depuración serán ignoradas.

Otro uso de una aplicación de consola es probar assemblys privados. En lugar del enfoque tradicional de crear algún tipo de arnés de prueba GUI para probar la versión comstackda de la DLL, simplemente puede volver a comstackr la DLL como una aplicación de consola y la entrada / salida desde / hacia la consola. He encontrado que esta técnica es más rápida que pasar el tiempo creando un arnés de prueba GUI.