2010-06-10 33 views

Respuesta

76

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 rastreo en la colección Listeners, pero solo cuando se ejecuta en depuración. Cuando la aplicación se compila en la configuración de lanzamiento, los elementos de depuración no se compilarán en el código.

Como Debug.WriteLine escribe a todas las escucha de seguimiento de la colección Listeners, es posible que esto podría ser la producción en más de un lugar (ventana de resultados de Visual Studio, Consola, Archivo de registro, aplicación de terceros que registra un oyente (Creo que DebugView lo hace), etc.).

+7

Strictly DebugView supervisa los mensajes registrados a través de la llamada a la API nativa de Windows 'OutputDebugString' (y' DebugPrint'). El 'DefaultTraceListener' escribe en' OutputDebugString', por lo que DebugView ve la salida. http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx – MarkJ

27

Console.WriteLine() es para programas de 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 en cuenta que debe eliminar este código (o envolverlo con un #ifdef DEBUG) cuando esté listo para crear la compilación de versión. De lo contrario, agregará una sobrecarga innecesaria a su programa. Esto lo hace menos ideal para el seguimiento de depuración.

Debug.WriteLine() genera información de rastreo si compila con DEBUG condicional #defined. Que está activado por defecto en la compilació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 API de Windows OutputDebugString() 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 compilación Release, 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.

14

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

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

Debug.WriteLine es solo para 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 montajes privados. En lugar del enfoque tradicional de crear algún tipo de arnés de prueba GUI para probar la versión compilada de la DLL, simplemente puede volver a compilar 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.

+2

"Si desea mostrar un mensaje a su usuario, debe usar console.writeline."Esto podría confundir a algunas personas porque solo mostrará algo al usuario si se ejecuta en una aplicación de consola. –

Cuestiones relacionadas