[C#] विजुअल स्टूडियो की आउटपुट विंडो में लिखना?


Answers

यह डीबग आउटपुट विंडो को लिख देगा:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");
Question

मैं डीबगिंग उद्देश्यों के लिए आउटपुट विंडो में एक संदेश लिखने की कोशिश कर रहा हूं। मैंने Java की system.out.println("") जैसे फ़ंक्शन की खोज की। मैंने Debug.Write , Console.Write , और Trace.Write की कोशिश की। यह कोई त्रुटि नहीं देता है, लेकिन यह कुछ भी प्रिंट नहीं करता है।

"DEBUG निरंतर परिभाषित करें" और "TRACE निरंतर परिभाषित करें" विकल्प चेक किए गए हैं।

मेनू टूल्सविकल्पडिबगिंग"सभी आउटपुट विंडो टेक्स्ट को तत्काल विंडो पर रीडायरेक्ट करें" विकल्प चेक नहीं किया गया है।

कॉन्फ़िगरेशन: सक्रिय (डीबग)

नोट: यदि प्रासंगिक हो तो मैंने विज़ार्ड के साथ "विंडोज फॉर्म एप्लिकेशन" के रूप में एक प्रोजेक्ट बनाया है। मुझे नहीं पता कि कहां देखना है।




    Debug.WriteLine

जो आप खोज रहे हैं

यदि नहीं, तो ऐसा करने का प्रयास करें:

मेनू टूल्सविकल्पडिबगिंगतुरंत आउटपुट भेजें अनचेक करें।




इसके लिए एक तीसरे पक्ष के ढांचे की आवश्यकता होती है, अर्थात् Serilog , लेकिन फिर भी मैंने इसे किसी भी स्थान पर आउटपुट प्राप्त करने के साथ एक बहुत ही आसान अनुभव पाया है जिसे मैं देख सकता हूं।

आपको सबसे पहले सेरिलोग के ट्रेस सिंक को स्थापित करने की आवश्यकता है। एक बार इंस्टॉल हो जाने पर, आपको इस तरह लॉगर सेट अप करने की आवश्यकता है:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(आप एक अलग न्यूनतम स्तर निर्धारित कर सकते हैं या इसे कॉन्फ़िगरेशन मान या किसी भी सामान्य सेरिलोग कार्यक्षमता में सेट कर सकते हैं। आप Trace लॉगर को कॉन्फ़िगर को ओवरराइड करने के लिए किसी विशिष्ट स्तर पर भी सेट कर सकते हैं, या फिर आप इसे करना चाहते हैं।)

फिर आप सामान्य रूप से संदेशों को लॉग इन करते हैं और वे आपके आउटपुट विंडो में दिखाई देते हैं:

Logger.Information("Did stuff!");

यह इतना बड़ा सौदा प्रतीत नहीं होता है, इसलिए मुझे कुछ अतिरिक्त फायदे बताएं। मेरे लिए सबसे बड़ा यह था कि मैं आउटपुट विंडो और कंसोल दोनों के साथ-साथ लॉग इन कर सकता था:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

इसने मुझे Console.Write अपनी सभी कॉल डुप्लिकेट किए बिना, आउटपुट का उपभोग कैसे किया, इस मामले में मुझे बहुत लचीलापन दिया। Debug.Write साथ Debug.Write । कोड लिखते समय, जब मैं बाहर निकलता हूं तो आउटपुट खोने के डर के बिना मैं विजुअल स्टूडियो में अपना कमांड लाइन टूल चला सकता था। जब मैंने इसे तैनात किया था और कुछ डीबग करने की आवश्यकता थी (और विजुअल स्टूडियो उपलब्ध नहीं था), तो कंसोल आउटपुट मेरी खपत के लिए आसानी से उपलब्ध था। एक ही संदेश को किसी फ़ाइल (या किसी अन्य प्रकार के सिंक) पर भी लॉग किया जा सकता है जब यह शेड्यूल किए गए कार्य के रूप में चल रहा हो।

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

यह भी बहुत कम सेट अप और कोड की आवश्यकता है।




मेरे लिए, केवल ट्रेस नामस्थान और डीबग ने काम नहीं किया:

System.Diagnostics.Trace.WriteLine("message");

मैं विजुअल स्टूडियो 2010 के तहत सी # प्रोजेक्ट में काम कर रहा हूं।




विजुअल स्टूडियो की आउटपुट विंडो पर प्रिंट करें:

Debug.Writeline();