2010-03-25 2 views

risposta

25

Cambia il tipo di applicazione per Windows prima di debug. Senza la finestra della console, Console.WriteLine funziona come Trace.WriteLine. Non dimenticare di reimpostare l'applicazione sul tipo di console dopo il debug.

+0

Ah, giusto. Sapevo che era qualcosa di facile. Devo averlo fatto almeno cinque volte. – AMissico

+0

Ho dimenticato, Alex Farber, IL TUO ECCEZIONALE! – AMissico

+0

Inoltre, non dimenticare di rimuovere il riferimento System.Windows.Forms che viene aggiunto quando si modifica il tipo di progetto. – 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"); 
     } 
    } 

** nota che questo è approssimato insieme quasi a pseudo codice. funziona ma necessita di lavoro :) **

+0

Il problema di questo approccio è 1) è basato su codice 2) l'output non è lo stesso, e 3) una finestra di console è ancora aperta. – AMissico

+0

Come varia l'uscita? – dkackman

+0

Non ricordo in particolare, ma mi mancavano nuove linee. Probabilmente perché utilizza Console.WriteLine(). – AMissico

4

Puoi cambiarlo in System.Diagnostics.Debug.Write();

0

Prova Trace.Write e utilizzare DebugView

-2

In realtà, esiste un modo più semplice: nella finestra "Opzioni" di Visual Studio (dal menu Strumenti), andare su "Debug" quindi selezionare l'opzione "Reindirizza tutto il testo della finestra di output nella finestra immediata".

+7

Questo non funziona affatto. –

+0

ctrl-alt-I richiama la finestra intermedia, ma sì si mostra vuota. – barlop

3

Nota se si sta utilizzando il metodo di dkackman ma si desidera scrivere l'output sia alla finestra della console e la finestra di debug, quindi è possibile modificare leggermente il suo codice come questo:

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; } 
    } 
}