2012-05-05 16 views
25

मैं विजुअल स्टूडियो में इंटेलिजेंस के लिए एक अतिरिक्त लिखना चाहता हूं।कस्टम इंटेलिसेंस एक्सटेंशन

क्या मेरे शोध से यह विस्तार करना संभव है, मुझे इंटेलिजेंस एक्सटेंशन पर कोई नमूना या दस्तावेज नहीं मिला है।

मैं कैसे IntelliSense की तरह एक साधारण HelloWorld संदेश दिखाने के लिए प्राप्त कर सकते हैं निम्नलिखित (जहां हैलो दुनिया स्ट्रिंग के लिए IntelliSense को रन टाइम पर जोड़ा जाता है):

enter image description here

+7

बस कुछ ही घंटे बिताए ive @oded गूगल के माध्यम से देख, MSDN ect और विस्तार पर कुछ भी खोजने के लिए सक्षम किया गया नहीं किया इंटेलिजेंस, क्या आपके पास इसकी सिफारिशें भी हैं कि इसे कहां देखना है? –

+0

क्षमा करें ल्यूक, मैं नहीं [दृश्य स्टूडियो एक्सटेंसिबिलिटी फोरम] (http://social.msdn.microsoft.com/Forums/en-US/vsx/threads) एक अच्छी शुरुआत जगह होगी। लेकिन आप लिंक को पूछने के लिए सवाल नहीं उठाते हैं और वास्तव में एक विषय-वस्तु प्रोग्रामिंग प्रश्न बनते हैं। – Oded

+1

इसके अलावा, इंटेलिजेंस में जो जोड़ना है, उसका एक उदाहरण बहुत मदद करेगा। कई अलग-अलग तकनीकों की आवश्यकता हो सकती है ... –

उत्तर

29

तो दृश्य स्टूडियो 2010 में और बाद में , आप जिस एक्स्टेंसिबिलिटी एपीआई को चालू करना चाहते हैं वह माइक्रोसॉफ्ट के तहत हैं। विज़ुअल स्टूडियो.भाषाएं। इंटेलिसेन्स नेमस्पेस। एक उच्च स्तर पर, आप एक ICompletionSourceProvider निर्यात करना चाहते हैं जो आपको आवश्यक वस्तुओं को प्रदान करेगा। दो अच्छी ब्लॉग पोस्ट here और here हैं जो मूल तकनीक का प्रदर्शन करती हैं।

यदि आप अपने स्क्रीनशॉट को वास्तविकता बनाना चाहते हैं तो आप दो समस्याएं चलाएंगे। (यही कारण है कि मैंने परिदृश्य की मांग की, क्योंकि मेरी सलाह यहां बदल जाएगी।) सबसे पहले, यह विधि कानूनी रूप से आपको मौजूदा समापन सेट में शामिल नहीं होने देती है, बल्कि एक नया प्रदान करती है। यूआई में यह दो टैब के रूप में दिखाई देता है, जैसे विजुअल बेसिक एडिटर में कॉमन/ऑल टैब। यह वर्तमान एपीआई की एक सीमा है। आप अपने AugmentCompletionSource में मौजूदा समापन सेट में से किसी एक को संशोधित करने का प्रयास कर सकते हैं, लेकिन मुझे नहीं पता कि यह काम करेगा या नहीं। किसी भी मामले में यह निश्चित रूप से असमर्थित है।

दूसरा, यह जानना वाकई मुश्किल है कि चीजें कब और कहां सुझाएं। आपके उदाहरण में, आपने कहा "IntelliSense के लिए string"। अफसोस की बात है, वीएस में कोई भी एपीआई (वर्तमान में) नहीं है जो आपको बताए कि डॉट से पहले क्या बात है। आप कुछ सरल हेरिस्टिक्स कर सकते हैं या अपने परिदृश्य के लिए कुछ पार्सर को लागू करने का प्रयास कर सकते हैं, लेकिन अब आपको स्वीकार करना होगा कि आपके पास सही परिणाम नहीं होंगे।

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

[अस्वीकरण:। मैं रोसलिन टीम है जो IntelliSense पर काम करता है के एक सदस्य हूँ]

+0

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

+0

@ जेसन, मैंने जावास्क्रिप्ट '[ऑर्डर (पहले =" उच्च ")] \t के लिए एक और इंटेलिजेंस जोड़ने की कोशिश की है [निर्यात (typeof (ICompletionSourceProvider)), ContentType ("JavaScript"), नाम ("EnhancedJavaScriptCompletion")] \t आंतरिक सील वर्ग JavaScriptCompletionSourceProvider: ICompletionSourceProvider \t { } ' लेकिन यह डीबगर में चरणों नेवर्स, हालांकि breakpoints ऐसा लगता है कि कोड लोड हो गया है। क्या आप कृपया मेरी मदद कर सकते हैं? – Adaptabi

+1

@DotNetWise: आपको एक नया प्रश्न बनाना चाहिए ताकि अन्य लोग इस प्रश्न का उत्तर दे सकें। ;-) –

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