Solución:
Console.WriteLine escribe en el flujo de salida estándar, ya sea en la depuración o en la versión. Debug.WriteLine escribe en los escuchas de seguimiento en la colección Listeners, pero solo cuando se ejecuta en depuración. Cuando la aplicación se compila en la configuración de la versión, los elementos de depuración no se compilan en el código.
Como Debug.WriteLine
escribe en todos los oyentes de seguimiento en la colección de oyentes, es posible que esto se pueda generar 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 que DebugView hace esto) , etc.).
Console.WriteLine()
está diseñado para programas en modo consola. Una característica interesante del proceso de alojamiento de Visual Studio hace que su salida aparezca en la ventana Salida de Visual Studio mientras se depura para los procesos que no tienen una consola. Eso es muy útil durante la depuración, pero tenga en cuenta 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 programa. Esto lo hace menos que ideal para el seguimiento de depuración.
Debug.WriteLine()
genera información de seguimiento si construye con el condicional DEBUG #defined. Que está activado de forma predeterminada en la versión de depuración. El lugar donde termina la salida se puede configurar en el archivo app.exe.config. Si esta configuración no se anula, .NET proporciona automáticamente una instancia de la clase DefaultTraceListener. Envía el texto Debug.WriteLine () con la función API de Windows OutputDebugString () al depurador. El depurador de Visual Studio hace que aparezca en la ventana de salida, al igual que Console.WriteLine ().
Una clara ventaja de Debug.WriteLine () es que no genera gastos generales en la compilación de la versión, las llamadas se eliminan de manera efectiva. Sin embargo, no admite 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 depurar, es mejor que use Debug.WriteLine.
Si desea mostrar un mensaje a su usuario (en una aplicación de consola), debe usar Console.WriteLine.
Debug.WriteLine es solo con el propósito de depurar su aplicación. En el modo de lanzamiento, se ignorarán sus declaraciones de depuración.
Otro uso de una aplicación de consola es probar ensamblados privados. En lugar del enfoque tradicional de crear algún tipo de arnés de prueba de GUI para probar la versión compilada de la DLL, simplemente puede reconstruir la DLL como una aplicación de consola y entrada / salida desde / hacia la consola. He descubierto que esta técnica es más rápida que dedicar tiempo a crear un arnés de prueba de GUI.