¿Puedo usar Trace.WriteLine en modo de lanzamiento?Trace.WriteLine en modo de lanzamiento?
¿Y cuál es la principal diferencia entre Trace.Write y Debug.Write?
¿Puedo usar Trace.WriteLine en modo de lanzamiento?Trace.WriteLine en modo de lanzamiento?
¿Y cuál es la principal diferencia entre Trace.Write y Debug.Write?
Ambos se compilan condicionalmente utilizando el atributo [Conditional]
.
Si el indicador TRACE
se define en la compilación, las llamadas a la clase Trace
darán como resultado que se escriba una salida de rastreo. De forma predeterminada, TRACE
se define tanto en modo de depuración como de versión. Si la bandera no está definida, no pasará nada.
Si se define el indicador DEBUG
, las llamadas a la clase Debug
dan como resultado que la salida se escriba en la secuencia de depuración. De manera predeterminada, DEBUG
solo se define en modo de depuración.
La otra gran diferencia es que con el rastreo es fácil personalizar el trace listeners y decidir más adelante qué quiere hacer con la salida de rastreo. Es más flexible que la salida de depuración, y generalmente es más adecuado para iniciar sesión en una aplicación de producción.
La diferencia está en el modo de lanzamiento.
Debug.Write no se compilará en el código cuando el símbolo DEBUG no esté definido, es decir, se compila en modo Release.
Sin embargo, Trace.Write se compilará tanto en modo Debug como en modo Release.
Así que si el indicador de traza se define por defecto, hay una manera para desarmarlo en los modos de liberación o depuración? – Carlo
@Carlo: Claro, está en las propiedades del proyecto, pestaña Construir. Hay dos casillas de verificación, una que dice "Definir constante DEBUG" y otra que dice "Definir constante de TRACE". Esos corresponden a cómo se comportarán las clases 'Debug' y' Trace' y sus correspondientes métodos 'Write'. – Aaronaught
¡Genial! Gracias, gran respuesta! – Carlo