2010-03-25 10 views

Respuesta

25

Cambiar el tipo de aplicación para Windows antes de la depuración. Sin la ventana de consola, Console.WriteLine funciona como Trace.WriteLine. No olvide restablecer la aplicación al tipo de Consola después de la depuración.

+0

Ah, eso es correcto. Sabía que era algo fácil. Debo haber hecho esto al menos cinco veces. – AMissico

+0

Olvidé, Alex Farber, ¡TU IMPRESIONANTE! – AMissico

+0

Además, no olvide quitar la referencia System.Windows.Forms que se agrega al cambiar el tipo de proyecto. – AMissico

13
class DebugWriter : TextWriter 
    {   
     public override void WriteLine(string value) 
     { 
      Debug.WriteLine(value); 
      base.WriteLine(value); 
     } 

     public override void Write(string value) 
     { 
      Debug.Write(value); 
      base.Write(value); 
     } 

     public override Encoding Encoding 
     { 
      get { return Encoding.Unicode; } 
     } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
#if DEBUG   
      if (Debugger.IsAttached) 
       Console.SetOut(new DebugWriter()); 
#endif 

      Console.WriteLine("hi"); 
     } 
    } 

** Nótese que esto es maltratado juntos casi seudo código. funciona pero necesita trabajo :) **

+0

El problema con este enfoque es 1) está basado en el código 2) la salida no es la misma, y ​​3) todavía se abre una ventana de la consola. – AMissico

+0

¿Cómo difiere la salida? – dkackman

+0

No recuerdo específicamente, pero me faltaban líneas nuevas. Probablemente porque use Console.WriteLine(). – AMissico

4

Puede cambiarlo a System.Diagnostics.Debug.Write();

0

Trace.Write tratar de utilizar DebugView

-2

En realidad, hay una manera más fácil: en la ventana "Opciones" de Visual Studio (desde el menú Herramientas), vaya a "Depuración" y luego marque la opción "Redirigir todos los textos de la ventana de salida a la ventana Inmediato".

+7

Eso no funciona en absoluto. –

+0

ctrl-alt-I abre la ventana intermedia, pero sí se muestra como vacía. – barlop

3

Nota si está utilizando el método de dkackman pero desea escribir la salida tanto a la ventana de la consola y la ventana de depuración, a continuación, puede modificar ligeramente su código como este:

class DebugWriter : TextWriter 
{ 
    //save static reference to stdOut 
    static TextWriter stdOut = Console.Out; 

    public override void WriteLine(string value) 
    { 
     Debug.WriteLine(value); 
     stdOut.WriteLine(value); 
     base.WriteLine(value); 
    } 

    public override void Write(string value) 
    { 
     Debug.Write(value); 
     stdOut.Write(value); 
     base.Write(value); 
    } 

    public override Encoding Encoding 
    { 
     get { return Encoding.Unicode; } 
    } 
} 
Cuestiones relacionadas