Visual Studio एक्सटेंशन को डीबग कैसे करें


93

मैं सिर्फ विजुअल स्टूडियो 2010 के लिए वीएसआईएक्स एक्सटेंशन लिख रहा हूं और यह पता नहीं लगा सकता कि इसे कैसे डीबग करना है।

संदेशों को आउटपुट करने के लिए एक स्पष्ट तरीका है। एक्सटेंशन टेम्पलेट का उपयोग करता है Trace.WriteLine()। लेकिन यह आउटपुट कहां मिलेगा?

जवाबों:


184

Visual Studio एक्सटेंशन को किसी अन्य एप्लिकेशन की तरह डीबग किया जा सकता है। आपको बस डिबग को लोड किए गए एक्सटेंशन के साथ लॉन्च करने के लिए डिबग अनुभव को सेटअप करने की आवश्यकता है। निम्नलिखित का प्रयास करें

  • प्रोजेक्ट पर राइट क्लिक करें और प्रॉपर्टीज चुनें
  • डिबग टैब पर जाएं

के लिए रेडियो बटन पर क्लिक करें Start External Program। इसे devenv.exe बाइनरी को इंगित करें। मेरी मशीन पर यह स्थित है

C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe

एक गैर x64 मशीन पर हालांकि आप "(x86)" भाग को हटा सकते हैं।

फिर कमांड लाइन आर्ग्युमेंट्स पर सेट करें /rootsuffix Exp। यह दृश्य स्टूडियो को सामान्य कॉन्फ़िगरेशन हाइव के बजाय प्रयोगात्मक हाइव का उपयोग करने के लिए कहता है। जब तक प्रायोगिक छत्ता में खुद को पंजीकृत करेगा डिफ़ॉल्ट रूप से VSIX एक्सटेंशन।

अब आप F5 कर सकते हैं और यह उपलब्ध एक्सटेंशन के रूप में आपके वीएसआईएक्स के साथ विजुअल स्टूडियो शुरू करेगा।


इस उत्तर के लिए धन्यवाद, एक हिट में एक मुद्दे को हल किया। बहुत आभारी!
रिचर्ड ग्रिफ़िथ्स 12

@JaredPar - vs2012 पूर्वावलोकन के प्रयोगात्मक छत्ते में खुद को पंजीकृत करने के लिए vs2012 विस्तार को बताने का एक तरीका है?
श्रीकांत वेणुगोपालन

1
ऐसा लगता है कि यह केवल तभी काम करता है जब आपके द्वारा उपयोग किए गए संस्करण डीबग करने और परीक्षण करने के लिए समान हों। इसलिए आप 2013 में डिबग नहीं कर सकते हैं और 2015 में एक्सटेंशन चला सकते हैं। @SrikanthVenugopalan
मारिया इनेस परनिसारी

@miparnisari - हाँ, ऐसा लगता है। एक दर्द की तरह, अगर आप कई संस्करणों का समर्थन कर रहे हैं।
श्रीकांत वेणुगोपालन

2
नमस्ते, आपका क्या मतलब है कि यह वीएस के साथ "उपलब्ध एक्सटेंशन" के रूप में शुरू होगा? मुझे उपलब्ध एक्सटेंशन कहां मिलेंगे? जब मैं टूल -> एक्सटेंशन और अपडेट पर जाता हूं, तो मैं केवल "इंस्टॉल किया गया", "ऑनलाइन" और "अपडेट" देखता हूं।
पब्राम्स

54

@JaredPar द्वारा स्वीकृत उत्तर तकनीकी रूप से सही है, लेकिन इस तथ्य से ग्रस्त है कि आपको इसे हर डेवलपर के लिए फिर से तैयार करने की आवश्यकता है, हर बार जब आपको कोड की एक नई प्रतिलिपि मिलती है, और किसी भी समय csproj.userफ़ाइल को हटा दिया जाता है। जब आप इसे इस तरह से करते हैं, तो सेटिंग्स csproj.userफ़ाइल में सहेजी जाती हैं ।

एक बेहतर विकल्प यह है कि सेटिंग्स को csprojफ़ाइल में डाल दिया जाए ताकि वे खो न जाएं। दुर्भाग्य से, विज़ुअल स्टूडियो आपको स्वचालित रूप से ऐसा करने की अनुमति नहीं देता है, इसलिए आपको मैन्युअल रूप से सेटिंग्स जोड़ने की आवश्यकता है। सौभाग्य से, सेटिंग्स किसी भी परियोजना के लिए समान हैं।

राइट-क्लिक करें और प्रोजेक्ट को अनलोड करें, फिर राइट क्लिक करें और csprojप्रोजेक्ट फ़ाइल फ़ाइल को संपादित करें । एक्सएमएल में, पहले को निम्न में जोड़ें PropertyGroup, उदाहरण के लिए ठीक बाद TargetFramework

<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>

इसके निम्नलिखित फायदे हैं;

  • यह इसे डिबग और रिलीज़ के लिए सेट करता है
  • यह जो भी आप वर्तमान में चल रहे हैं Visual Studio का संस्करण चलाता है
  • इसे स्रोत नियंत्रण में जांचा जाता है, इसलिए हर डेवलपर को यह याद नहीं रखना है कि यह कैसे करना है :)

जैसा कि @MBulli टिप्पणियों में कहती है, यदि आपने स्वीकृत उत्तर में बदलाव किए हैं, तो अपनी *.csproj.userफ़ाइल को हटा दें क्योंकि इसमें सेटिंग्स आपके द्वारा मुख्य csprojफ़ाइल में जोड़े गए को ओवरराइड कर देंगी ।


6
* .Csproj.user फ़ाइल को हटाना सुनिश्चित करें क्योंकि उपयोगकर्ता सेटिंग्स में परियोजना सेटिंग्स पर पूर्वता है।
एमबीउली

शानदार जवाब, धन्यवाद! स्वीकृत की तुलना में बहुत अधिक कुशल।
ज़िवैरिव एव्गेनि

बनाम 2019 के लिए पूरी तरह से काम किया
x0n

2

OutputWindowHelper.OutputString 'सामान्य' उत्पादन विंडो फलक (Ctrl Alt ओ) के लिए विधि लिखते हैं। मैंने वीएस 2013 में इसे प्राप्त करने के लिए अपने .csproj संदर्भों में इस पंक्ति को जोड़ा

<Reference Include="Microsoft.VisualStudio.Services.Integration, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

इसका उत्तर भी देखें ।


नोट: OutputWindowHelper Visual Studio 2015 में मौजूद नहीं है। केवल VS2015 के साथ एक मशीन अगर यह कहा जाता है, तो एक त्रुटि होगी। यह भी देखें github.com/landofjoe/NuspecPackager/issues/1
Quango

0

यदि आप एक UnitTestExtension को डीबग करने का प्रयास करते हैं, तो आपको डीबगर को vestest में भी संलग्न करना चाहिए। * यहाँ descibed जैसी प्रक्रियाओं को निष्पादित करें । अन्यथा आप सक्रिय ब्रेकपॉइंट देख सकते हैं, लेकिन डिबगर इसे कभी हिट नहीं करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.