12

पृष्ठभूमि के साथ एक कस्टम कंपाइलर को एकीकृत करना: मैं अपने कस्टम संकलन-समय विशेषताओं को संभालने के लिए "मूल" कंपाइलर को विस्तारित करने वाला एक कस्टम वीबी कंपाइलर बनाना चाहता हूं।विजुअल स्टूडियो आईडीई

प्रश्न: के बाद मैं अपने कस्टम संकलक बना लिया है और मैं एक निष्पादन मानक कमांड लाइन इंटरफेस के माध्यम से VB कोड संकलन करने में सक्षम फ़ाइल मिल गया है, मैं कैसे विजुअल स्टूडियो IDE के साथ इस संकलक एकीकृत करते हैं? (जैसे कि "संकलन" या "बिल्ड" दबाकर डिफ़ॉल्ट कंपाइलर के बजाय मेरे कंपाइलर का उपयोग किया जाएगा)।

संपादित: यहाँ (मुझे सही अगर मैं गलत हूँ)

प्रतिक्रियाओं से, मैं देख रहा हूँ इस सवाल का एक सा चौंकाने वाला है, तो मैं आगे मेरी जरूरतों और पृष्ठभूमि व्याख्या करेगा: नेट प्रदान करता है गुणों नामक एक महान तंत्र के साथ। जहां तक ​​मैं समझता हूं, गुणों को जिम्मेदार तत्व (असेंबली, मॉड्यूल, कक्षा, विधि इत्यादि) पर उनके इच्छित व्यवहार को लागू करते हैं - विशेषताओं पर प्रतिबिंबित होना चाहिए। तो यहां असली चाल सही जगह पर व्यवहार को प्रतिबिंबित और लागू कर रही है।

उदाहरण के लिए सीरियलाइजेशन लेते हैं: हम सीरियलज़ेबल विशेषता वाले वर्ग को सजाने के लिए तैयार करते हैं। फिर हम वर्ग के उदाहरण को फॉर्मेटर की सीरियलाइज विधि में पास करते हैं। फॉर्मेटर उदाहरण पर प्रतिबिंबित करता है, जांच करता है कि इसमें सीरियलज़ेबल विशेषता है, और तदनुसार अभिनय।

अब, अगर हम सिंक्रनाइज़ेशन, ध्वज, अप्रचलित और CLSCompliant गुणों की जांच करते हैं, तो असली सवाल यह है कि: उन पर कौन प्रतिबिंबित करता है? कम से कम कुछ मामलों में, यह संकलक (और/या आईडीई) होना चाहिए। इसलिए, ऐसा लगता है कि यदि मैं कस्टम विशेषताओं को बनाना चाहता हूं जो किसी विशिष्ट उपभोक्ता के बावजूद किसी तत्व के व्यवहार को बदलते हैं, तो मुझे संकलन में उन्हें प्रतिबिंबित करने के लिए कंपाइलर का विस्तार करना होगा।

बेशक

, ये मेरे व्यक्तिगत अंतर्दृष्टि नहीं हैं: पुस्तक "Applied .NET Attributes" कस्टम विशेषता और एक कस्टम सी # संकलक बनाने (उदाहरण के लागू करने के लिए "जावा प्रयोग किया जाता है संकलन में उस विशेषता पर चिंतन करने के की एक पूरी उदाहरण प्रदान करता है स्टाइल चेक अपवाद ")।

+1

वास्तव में? आप _really_ ऐसा करना चाहते हैं? –

+3

क्यों नहीं? ऐसा नहीं है कि "एमए हनिन" अपने क्षेत्र के बाहर कुछ करने की कोशिश कर रहा है। – AMissico

+0

@ एमए। हनिन: मैं समझाऊंगा नहीं। अगर वे चौंक गए हैं तो उन्हें सवाल का जवाब नहीं देना चाहिए। सही बात? – AMissico

उत्तर

2

http://msdn.microsoft.com/en-us/library/ms171452.aspx पर "एमएसबिल्ड अवलोकन" देखें। विजुअल स्टूडियो परियोजनाएं एमएसबिल्ड परियोजनाएं हैं। मुझे विश्वास है कि आपको केवल कुछ मामूली बदलाव करना होगा। मैंने इसे एक कंपाइलर के लिए नहीं किया है, लेकिन मैंने इसे संकलन के बाद आईएलएमर्ज के साथ किया और यह बहुत अच्छा काम करता है। मर्ज किए गए असेंबली डीबग करने के लिए निर्बाध और भी संभव है।

3

चेक आउट "BuildAction संपत्ति" और "CustomTool संपत्ति" http://msdn.microsoft.com/en-us/library/0c6xyb66(VS.80).aspx

पर कुछ साल पहले, मैं एक कस्टम संकलक बनाने, यह पंजीकृत करना, और इन गुणों की स्थापना के बारे एक उत्कृष्ट लेख पढ़ें। मुझे अब लेख नहीं मिल रहा है, लेकिन यह आपको शुरू करना चाहिए।

+1

+1, मोज़िला MIDL कंपाइलर को एकीकृत करने के लिए इसका उपयोग किया गया। – MSalters

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

  • कोई संबंधित समस्या नहीं^_^