2012-02-14 12 views
73

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

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

उत्तर

144

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

  • Start External Program के लिए रेडियो बटन पर डीबग टैब
  • क्लिक करने के बाद पर निम्न

    • राइट क्लिक करके देखें। इसे devenv.exe बाइनरी पर इंगित करें। मेरी मशीन पर इसे

      सी स्थित है: \ Program Files (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 10.0 \ Common7 \

      एक गैर x64 मशीन पर आप निकाल सकते हैं, हालांकि आईडीई \ devenv.exe " (x86) "भाग।

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

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

    +0

    इस उत्तर के लिए धन्यवाद, एक हिट में एक समस्या हल की। बहुत आभारी! –

    +0

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

    +0

    मैंने इसे वीएस2015 में किया और यह काम किया। – matthewpavkov

    2

    OutputWindowHelper.OutputString विधि 'सामान्य' आउटपुट विंडो फलक (Ctrl Alt o) पर लिखती है। मैं इसके अलावा this answer देख वी.एस. 2013

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

    में इसे पाने के लिए मेरे .csproj संदर्भ में इस लाइन को जोड़ा।

    +0

    नोट आउटपुटविंडोहेल्पर विजुअल स्टूडियो 2015 में मौजूद नहीं है। केवल वीएस2015 वाली मशीन एक त्रुटि को फेंक देगी यदि इसे कहा जाता है। यह भी देखें https://github.com/landofjoe/NuspecPackager/issues/1 – Quango

    38

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

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

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

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

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

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

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

    +3

    * .csproj.user फ़ाइल को हटाना सुनिश्चित करें क्योंकि उपयोगकर्ता सेटिंग्स को प्रोजेक्ट सेटिंग्स पर प्राथमिकता है। – MBulli

    +0

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

    0

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

    संबंधित मुद्दे