2010-03-25 1 views
30

डिबगिंग करते समय, मैंने Console के आउटपुट विंडो को आउटपुट पुनर्निर्देशित करने के लिए, जबकि डिबगिंग चाहते हैं।पुनर्निर्देशन Console.Write ... दृश्य स्टूडियो के आउटपुट विंडो को तरीके <strong>दृश्य स्टूडियो</strong> में एक <strong>कंसोल आवेदन</strong> परियोजना से

उत्तर

25

आवेदन बदलें प्रकार। कंसोल विंडो के बिना, Console.WriteLine Trace.WriteLine की तरह काम करता है। डिबगिंग के बाद कंसोल प्रकार पर एप्लिकेशन को रीसेट करना न भूलें।

+0

आह, यह सही है। मुझे पता था कि यह कुछ आसान था। मैंने इसे कम से कम पांच बार किया होगा। – AMissico

+0

मैं भूल गया, एलेक्स फरबर, आपका अद्भुत! – AMissico

+0

इसके अलावा, System.Windows.Forms संदर्भ को निकालना न भूलें जो प्रोजेक्ट प्रकार को बदलते समय जोड़ा जाता है। – 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"); 
     } 
    } 

** ध्यान दें कि यह लगभग छद्म कोड को एक साथ जोड़ दिया गया है। यह काम करता है लेकिन काम की ज़रूरत है :) **

+0

1 है) यह कोड आधारित है 2) आउटपुट समान नहीं है, और 3) एक कंसोल विंडो अभी भी खोला गया है। – AMissico

+0

आउटपुट कैसे भिन्न होता है? – dkackman

+0

मुझे विशेष रूप से याद नहीं है, लेकिन मुझे नई लाइनें याद आ रही थीं। शायद क्योंकि कंसोल। राइटलाइन() का उपयोग करें। – AMissico

4

आप इसे System.Diagnostics.Debug.Write() में बदल सकते हैं;

0

कोशिश Trace.Write और डिबगिंग से पहले Windows करने के लिए उपयोग DebugView

-2

असल में, सबसे आसान तरीका है: विजुअल स्टूडियो (टूल्स मेनू से) "विकल्प" विंडो में, "डिबगिंग" पर जाएं, फिर "तत्काल विंडो में सभी आउटपुट विंडो टेक्स्ट को रीडायरेक्ट करें" विकल्प को चेक करें।

+7

यह बिल्कुल काम नहीं करता है। –

+0

ctrl-alt-I इंटरमीडिएट विंडो लाता है, लेकिन हाँ यह खाली के रूप में दिखाता है। – barlop

3

नोट आप dkackman की विधि का उपयोग कर रहे हैं, लेकिन आप दोनों कंसोल विंडो और डिबग खिड़की के उत्पादन में लिखने के लिए चाहते हैं, तो आप थोड़ा अपने कोड इस तरह संशोधित कर सकते हैं: इस दृष्टिकोण के साथ

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; } 
    } 
} 
समस्या
संबंधित मुद्दे