2010 के विजुअल स्टूडियो में कंसोल का आउटपुट देखकर?


163

मैं कुछ आउटपुट ( Console.WriteLine("...");) के साथ एक सरल सी # प्रोग्राम लिख रहा हूं । समस्या यह है कि हर बार जब मैं इसे चलाता हूं, तो मैं आउटपुट विंडो में प्रोग्राम का आउटपुट नहीं देख सकता।

"प्रोग्राम आउटपुट" टैग पहले से ही जांचा हुआ है, और मैंने पहले से ही सभी आउटपुट को इंटरमीडिएट विंडो पर रीडायरेक्ट कर दिया है लेकिन कोई फायदा नहीं हुआ।

मैं प्रोग्राम का आउटपुट देखकर कैसे सक्षम करूं?

मुझे नहीं लगता कि समस्या मेरे कोड के साथ है। मैंने एक साधारण प्रोग्राम चलाने की कोशिश की जो सिर्फ एक स्ट्रिंग और रीलाइनलाइन "ala hello world" को आउटपुट करता है और मैं अभी भी कोई आउटपुट देखने में असमर्थ हूं। समस्या या तो मेरे साथ है जो गलत स्थान पर आउटपुट की तलाश कर रही है या दृश्य स्टूडियो अभिनय कर रहा है।

debug.writeविधि को भी काम नहीं करता।

उपयोग करना debug.Write, यह सब काम करता है, हालांकि यह पहले नहीं था। पुनः आरंभ करने से पहले या तो मेरे साथ कुछ गड़बड़ हो गई या मुझे बस एक ब्रेक लेने की आवश्यकता है, या तो यह सब अच्छा है। उपयोगी टिप्पणियों के लिए सभी को धन्यवाद =)


7
विजुअल स्टूडियो आपकी कंसोल विंडो को कवर कर रहा है। इसे अपने अन्य मॉनीटर पर ले जाएं।
हंस पसंत

जवाबों:


195

आप आउटपुट विंडो पर संदेश लिखने के लिए System.Diagnostics.Debug.Writeया System.Runtime.InteropServicesविधि का उपयोग कर सकते हैं ।


10
System.Diagnostics.Debug.Write (ओपी खेलने में नाम स्थान नहीं होने पर)
jonsca

4
यह सच है, मैं बस कंट्रोल + पीरियड हिट करने के आदी हूं। :)
रिचर्ड एडनाम्स

jonsca: मेरे पास प्ले में एक नाम स्थान है और मैं सिर्फ कंसोल का उपयोग क्यों कर सकता हूं। राइटलाइन, मैं चाहता हूं कि मेरा प्रोग्राम कंसोल को लिखने के लिए न केवल परीक्षण कारणों के लिए ??
r3x

2
यदि आपका एप्लिकेशन एक कंसोल एप्लिकेशन है, तो आप कंसोल विंडो में प्रिंट करने के लिए कंसोल. राइटिटलाइन का उपयोग कर सकते हैं या यदि आप एप्लिकेशन एक विंडोज़ फॉर्म ऐप है तो आप डीबग.राइट का उपयोग कर सकते हैं। Abit
रिचर्ड

1
दिलचस्प यह नहीं जानता था कि, और हाँ मेरा ऐप एक विंडोज़ फ़ॉर्म ऐप है, लेकिन मैंने कोई डिबग का उपयोग करने की कोशिश नहीं की। एक ही समस्या के कारण, यह संकलन करता है और सभी आड़ू है, लेकिन कहीं भी आउटपुट देखने में असमर्थ है
r3x

50

जाँच करने के लिए यहाँ कुछ चीजें हैं:

  1. इसके लिए console.Write/WriteLine, आपका ऐप एक कंसोल एप्लिकेशन होना चाहिए। (समाधान एक्सप्लोरर में प्रोजेक्ट को राइट-क्लिक करें, गुण चुनें , और एप्लिकेशन टैब में " आउटपुट प्रकार " कॉम्बो को देखें - " कंसोल एप्लिकेशन " होना चाहिए (ध्यान दें, अगर आपको वास्तव में एक विंडोज़ एप्लिकेशन या क्लास लाइब्रेरी की आवश्यकता है, तो डॉन) 'इसे केवल कंसोल ऐप में बदलने के लिए Console.WriteLine) प्राप्त करें ।

  2. आप System.Diagnostics.Debug.WriteLineआउटपुट विंडो पर लिखने के लिए उपयोग कर सकते हैं (वीएस में आउटपुट विंडो दिखाने के लिए, व्यूआउटपुट के लिए मिला ) ध्यान दें कि ये राइट्स केवल एक बिल्ड में होंगे जहां डेबग कंडीशनल को परिभाषित किया गया है (डिफ़ॉल्ट रूप से, डिबग बिल्ड इसे परिभाषित करता है, और रिलीज बिल्ड नहीं है)

  3. System.Diagnostics.Trace.Writelineयदि आप गैर-डिबग बिल्ड में "श्रोताओं" को लिखने में सक्षम होना चाहते हैं तो आप इसका उपयोग कर सकते हैं । (डिफ़ॉल्ट रूप से, यह विजुअल स्टूडियो में आउटपुट विंडो पर लिखता है, जैसे Debug.Writeline)


2
मैं अपना आउटपुट नहीं देख रहा था, लेकिन फिर महसूस किया कि मुझे Ctrl + Shift + F5 के बजाय डिबग मोड (F5) में प्रोग्राम चलाना था। धन्यवाद!
ट्रैविस हेटर

System.Diagnostics.Trace.Writeline हालांकि काम करने के लिए नहीं लगता है, क्या इसके लिए मुझे कुछ और कॉन्फ़िगर करने की आवश्यकता है?
ट्रैविस हेटर

1
«1» - गलत बयान। मोनो सभी अनुप्रयोगों के लिए आउटपुट ठीक दिखाता है। «2» - ofc। समस्या यह है कि विधि टर्मिनल के लिए भी आउटपुट नहीं करती है। तो कोई बिना आईडीई के पीसी पर किसी ऐप को डिबग नहीं कर सकता है।
Hi-Angel

34

Console.Read();अपने कार्यक्रम के अंत में जोड़ें । यह एप्लिकेशन को बंद करने से रखेगा, और आप इसके आउटपुट को इस तरह देख सकते हैं।

यह एक सांत्वना अनुप्रयोग है जिसे मैंने अभी खोदा है जो प्रसंस्करण के बाद बंद हो जाता है लेकिन बाहर निकलने से पहले:

class Program
{
    static void Main(string[] args)
    {
        DummyObjectList dol = new DummyObjectList(2);
        dol.Add(new DummyObject("test1", (Decimal)25.36));
        dol.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolxs = new XmlSerializer(typeof(DummyObjectList));
        dolxs.Serialize(Console.Out, dol);

        Console.WriteLine(string.Empty);
        Console.WriteLine(string.Empty);

        List<DummyObject> dolist = new List<DummyObject>(2);
        dolist.Add(new DummyObject("test1", (Decimal)25.36));
        dolist.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolistxs = new XmlSerializer(typeof(List<DummyObject>));
        dolistxs.Serialize(Console.Out, dolist);
        Console.Read(); //  <--- Right here
    }
}

वैकल्पिक रूप से, आप बस अंतिम पंक्ति पर एक विराम बिंदु जोड़ सकते हैं।


2
Console.ReadLine काम करता है के रूप में अच्छी तरह से आप बस हिट दर्ज करने के लिए जारी रखने के लिए जहां के रूप में पढ़ें किसी भी मानक कुंजी लेता है।
रिचर्ड एडनम्स

इसका विंडोज़ रूप ऐप, और डिबग.राइट और न ही कंसोल। राइटलाइन विधि काम करने लगती है
r3x

Euhm, आप विंडोज फॉर्म ऐप से कंसोल में आउटपुट क्यों कर रहे हैं? मैं इसके बजाय फॉर्म या डायलगबॉक्स पर आउटपुट देने का सुझाव देता हूं। या एक कंसोल ऐप
बनाएं

हाँ, जो पहले से ही मुझे बताया गया था, यह मेरी ओर से एक मूर्खतापूर्ण गलती है, फिर भी सिर ऊपर करने के लिए धन्यवाद =)
r3x

Console.Read () कंसोल विंडो को फोकस प्राप्त करने का कारण बनता है, और इसलिए VS के सामने दिखाई देता है। यदि आप एक कंसोल के बाद बस ब्रेक पॉइंट लगाते हैं। () कंसोल विंडो आपके आउटपुट को दिखाएगा, लेकिन इसमें फोकस नहीं है, इसलिए यह दिखाई नहीं दे सकता है।
निगेल

21

प्रोग्राम को चलाने के लिए Ctrl+ दबाएं ।F5F5


1
Ctrl + F5 आउटपुट विंडो में कुछ भी देखने के लिए आप डिबगिंग के बिना आवेदन शुरू करता है।
रिचर्ड एडनम्स

6
इसने मेरे लिए काम किया; मैं सिर्फ यह देखना चाहता था कि प्रोग्राम क्या आउटपुट दे रहा था, कंसोल आउटपुट में से कोई भी नहीं दिखा रहा था। इसने इसे चलाने के बाद कंसोल विंडो को खुला रखने के लिए प्रेरित किया ताकि मैं आउटपुट देख सकूं।
davenpcj

+1, यह एक है, यदि आप वास्तव में डिबग नहीं करना चाहते हैं (कंसोल दिखाता है, और आउटपुट को पढ़ने की अनुमति देता है)।
19

8

System.Diagnostics.Debug.WriteLine()काम करेगा, लेकिन आपको आउटपुट के लिए सही जगह देखनी होगी। दृश्य स्टूडियो 2010 में, मेनू बार पर, डीबग -> विंडोज -> आउटपुट पर क्लिक करें । अब, आपकी त्रुटि सूची के बगल में डॉक की गई स्क्रीन के निचले भाग में आउटपुट टैब होना चाहिए। इसे क्लिक करें और यह ड्रॉपडाउन सूची में डिबग स्ट्रीम से आउटपुट दिखा रहा है।

पुनश्च: मुझे लगता है कि आउटपुट विंडो एक नई स्थापना पर दिखाता है, लेकिन मुझे याद नहीं है। यदि यह नहीं है, या यदि आपने इसे दुर्घटना से बंद कर दिया है, तो इन निर्देशों का पालन करें।


0

अपने विंडो कंसोल को खुला रखने के लिए और मानक आउटपुट स्ट्रीम के बजाय अन्य आउटपुट विधियों का उपयोग न करने के लिए, Name-of-your-project -> Properties -> Linker -> सिस्टम पर जाएं।

वहां पहुंचने के बाद, सबसाइटम टैब चुनें और कंसोल (/ SUBSYSTEM: CONSOLE) को चिह्नित करें। एक बार जब आप ऐसा कर लेते हैं, तो जब भी आप Ctrl + F5 का उपयोग करना चाहते हैं (डिबगिंग के बिना शुरू करें) और आपका कंसोल खुला रहेगा। :)


मुझे लगता है कि यह C ++ पर लागू है, प्रश्न में C # के रूप में नहीं।
दिमित्री फेडोरकोव

0

मैं किसी न किसी कारण से बार-बार इसमें भाग लेता हूं, और मैं इसका समाधान नहीं कर सकता कि इस समाधान का उल्लेख क्यों नहीं किया गया है:

दृश्यआउटपुट पर क्लिक करें (या केवल CtrlW> O दबाकर रखें )

कंसोल आउटपुट तो दिखाई देता है जहाँ आपके त्रुटि सूची , स्थानीय लोगों , और घड़ी खिड़कियां हैं।

नोट: मैं विजुअल स्टूडियो 2015 का उपयोग कर रहा हूं।


आपके द्वारा उल्लेखित आउटपुट विंडो ऐसा लगता है कि यह डीबगर द्वारा निर्मित है क्योंकि इसमें असेंबली लोड होने, थ्रेड शुरू करने और वगैरह को रोकने से संबंधित बहुत सारी लाइनें हैं। यह कंसोल आउटपुट से अलग है।
पीटरवर्मोंट

0

विज़ुअल स्टूडियो अपने आप में कंसोल विंडो को कवर करता है, विज़ुअल स्टूडियो विंडो को कम से कम करने की कोशिश करें जो वे एक दूसरे के ऊपर खींची गई हैं।


-1

Program.cs में, बीच में:

static int Main(string[] agrs)
{

और अपने बाकी कोड जोड़ें:

#if DEBUG
    int rtn = Main2(args);
    Console.WriteLine("return " + rtn);
    Console.WriteLine("ENTER to continue.");
    Console.Read();
    return rtn;
}

static int Main2(string[] args)
{
#endif

कृपया विवरण जोड़ें, कि आपका कोड समस्या का समाधान कैसे करता है।
कोपाकिलर

-4

आप 2 छोटे तरीके बना सकते हैं, एक जिसे कार्यक्रम की शुरुआत में बुलाया जा सकता है, दूसरे को अंत में। आप Console.Read () का भी उपयोग कर सकते हैं, ताकि प्रोग्राम अंतिम लेखन लाइन के बाद बंद न हो।

इस तरह से आप यह निर्धारित कर सकते हैं कि जब आपकी कार्यक्षमता निष्पादित हो और प्रोग्राम मौजूद होने पर भी।

startProgram()
{
     Console.WriteLine("-------Program starts--------");
     Console.Read();
}


endProgram()
{
    Console.WriteLine("-------Program Ends--------");
    Console.Read();
}

मैं यह नहीं देखता कि यह उत्तर कॉन्सोल के बाद से कैसे नई जानकारी लाता है। रीड () संभावना पहले ही बताई जा चुकी है।
ForceMagic
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.