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




visual-studio-2010 visual-studio (8)

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

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

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

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

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


आप की तलाश कर रहे हैं

MessageBox.Show()

या

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.Debug.WriteLine("message");

.NET कोर (वी 1.0 या 1.1) के साथ काम करते समय विफल रहता है।

हमें Microsoft.Extensions.Logging से एक लॉगर बनाने और उपयोग करने के लिए माना जाता है। एक्सटेंशन। लॉजिंग, लेकिन वह लॉग केवल dotnet.exe पॉपअप कंसोल विंडो में दिखाई देता है, विजुअल स्टूडियो की आउटपुट विंडो में नहीं।


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

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

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


यह मूल प्रश्न का उत्तर नहीं है। लेकिन जब से मुझे ऑब्जेक्ट डेटा को इंटरैक्टिव डंपिंग करने के साधनों की खोज करते समय यह प्रश्न मिला, तो मुझे लगा कि दूसरों को इस बहुत ही उपयोगी विकल्प का उल्लेख करने से फायदा हो सकता है।

मैंने अंततः कमांड विंडो का उपयोग किया और नीचे दिखाए गए Debug.Print कमांड में प्रवेश किया। इसने एक प्रारूप में एक मेमोरी ऑब्जेक्ट मुद्रित किया जिसे टेक्स्ट के रूप में कॉपी किया जा सकता है, जो कि मुझे वास्तव में जरूरी है।

> Debug.Print <item>

  id: 1
  idt: null
  igad: 99
  igbd: 99
  gl_desc: "New #20"
  te_num: "1-001-001-020"

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

Debug.Writeline();

Visual Studio 2015 में मेरे लिए निम्नलिखित काम किया:

OutputDebugStringW(L"Write this to Output window in VS14.");

here OutputDebugStringW के लिए प्रलेखन पढ़ें।

ध्यान दें कि यह विधि केवल तभी काम करती है जब आप अपना कोड debug mode कर रहे हों ( debug mode )


    Debug.WriteLine

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

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

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





debugging