2009-01-06 9 views
13

हम COM (CCW) के माध्यम से देशी सी ++ के भीतर हमारे .NET असेंबली डीएलएल का उपयोग कर रहे हैं। जब भी मैं अपने डीएलएल का नया संस्करण बनाता हूं, मुझे अपने कोड में इसका उपयोग करने वाले क्रू को दो फाइलें (.dll और इसी .tlb) भेजनी पड़ती हैं।.NET असेंबली डीएलएल में संसाधन फ़ाइल के रूप में .tlb को कैसे एम्बेड करें?

यह नेट DLL फ़ाइल में एक संसाधन के रूप .tlb फ़ाइल एम्बेड करने के लिए संभव है?

+1

नीचे दिए गए उत्तर के समान कदम, लेकिन एमएसडीएन से: http://msdn.microsoft.com/en-us/library/ww9a897z.aspx – yzorg

उत्तर

11

यह बिल्कुल विजुअल स्टूडियो .NET के साथ ऐसा करना सरल नहीं है, लेकिन यह किया जा सकता है।

  1. जैसे, "YourLibrary.tlb" अपने TLB फ़ाइल जनरेट करें,: एक बुनियादी स्तर पर, आप क्या करना है यह है।

  2. एक Win32 संसाधन स्क्रिप्ट फ़ाइल बनाएं, उदाहरण के लिए, टेक्स्ट संपादक (जैसे नोटपैड, या फ़ाइल/नई/फ़ाइल .../विजुअल स्टूडियो में टेक्स्ट फ़ाइल) का उपयोग करके "YourLibrary.rc"।

  3. स्क्रिप्ट फ़ाइल में निम्न पाठ को अक्षरशः टाइप करें (लेकिन निश्चित रूप से अपने वास्तविक TLB फ़ाइल नाम स्थानापन्न):

    1 typelib "YourLibrary.tlb"

  4. सहेजें एक ही करने के लिए स्क्रिप्ट फ़ाइल फ़ोल्डर टीएलबी फ़ाइल के रूप में।

  5. एक दृश्य स्टूडियो कमांड प्रॉम्प्ट से, स्क्रिप्ट फ़ाइल के साथ फ़ोल्डर में बदल सकते हैं और निम्न आदेश का उपयोग कर इसे संकलन:

    YourLibrary.rc

    rc

    यह वही में एक Win32 संसाधन फ़ाइल उत्पन्न होगा फ़ोल्डर "YourLibrary.res" कहा जाता है।

  6. विजुअल स्टूडियो में, समाधान एक्सप्लोरर में प्रोजेक्ट नोड (उदा।, "YourLibrary") पर राइट क्लिक करें और गुण चुनें।

  7. आवेदन टैब पर, "संसाधन" के अंतर्गत, "संसाधन फ़ाइल" विकल्प का चयन और कदम 5.

  8. सहेजें से "YourLibrary.res" फाइल करने के लिए ब्राउज़ करें और परियोजना के पुनर्निर्माण।

टीएलबी अब डीएलएल में संसाधन के रूप में एम्बेड किया जाएगा जैसे कि अन्य COM अनुप्रयोग इसे पढ़ सकते हैं।

यदि आप बाद में टीएलबी फ़ाइल को पुन: उत्पन्न करते हैं तो आपको संसाधन फ़ाइल को पुन: संकलित करने के लिए चरण 5 को दोहराना होगा, और डीएलएल में नए संस्करण को एम्बेड करने के लिए चरण 8 को दोहराना होगा।

जो कुछ भी कहा गया है, आप बिल्ड घटनाओं के साथ इनमें से कुछ को स्वचालित करने में सक्षम हो सकते हैं या कस्टम एमएसबिल्ड लक्ष्य को अपनी प्रोजेक्ट फ़ाइल में डालकर सक्षम हो सकते हैं, लेकिन यह एक पूरी चर्चा है।

+0

आपके उत्तर के आधार पर मैंने भवन को स्वचालित करने के लिए एक पोस्ट-बिल्ड ईवेंट बनाया है और एम्बेडिंग .tlb: http://thoughtandcode.blogspot.ru/2015/05/sole-com-for-you-chapter-3.html – Mikhail

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