2009-12-14 13 views
9

मेरे पास एक सी # क्लास लाइब्रेरी प्रोजेक्ट है जो सिस्टम पर पंजीकृत COM DL का उपयोग करता है। अब मैं COM dll को साइड-बाय-साइड असेंबली के रूप में तैनात करना चाहता हूं, इसलिए मुझे इसे पंजीकृत करने की आवश्यकता नहीं है, या अन्य अनुप्रयोगों में हस्तक्षेप नहीं करना है जो डीएल के एक अलग संस्करण का उपयोग कर सकते हैं।.NET DLL में प्रकट कैसे करें?

मैंने नए आइटम मेनू का उपयोग करके C# प्रोजेक्ट में app.manifest जोड़ा है, लेकिन मुझे यकीन नहीं है कि आगे क्या करना है। प्रोजेक्ट गुण/एप्लिकेशन/आइकन और मैनिफेस्ट में, मेनिफेस्ट ड्रॉप डाउन अक्षम है। मुझे नहीं पता कि इसे कैसे प्राप्त किया जाए। मैंने एक मैनिफेस्ट फ़ाइल जोड़ दी है, यह ड्रॉपडाउन सूची में क्यों नहीं है?

मेरे पास COM dll के लिए एक मैनिफेस्ट है जो C++ अनुप्रयोगों के साथ काम करता है, और मुझे लगता है कि मैं इसे जैसा रखता हूं। अब मुझे पता होना चाहिए कि C# प्रोजेक्ट के लिए app.manifest को कैसे संपादित करें। मैं एक ज्ञात अच्छा निर्भरता तत्व जोड़कर शुरू करूंगा। लेकिन मुझे इसे सेट अप करने के बारे में एक ट्यूटोरियल चाहिए, मुझे इसे कहीं भी कवर नहीं किया गया है।

मैं VS2008

+1

मुझे लगता है कि मैनिफेस्ट बॉक्स एक exe प्रोजेक्ट के लिए सक्षम है। क्या कक्षा पुस्तकालय परियोजना कभी प्रकट नहीं होती है? –

उत्तर

10

आप निश्चित रूप से एक .net dll में एक मैनिफेस्ट एम्बेड कर सकते हैं। एप्लिकेशन मेनिफेस्ट की सामग्री सभी असेंबली पर लागू नहीं होती है, लेकिन कुछ करते हैं। उदाहरण के लिए, यूएसी प्रविष्टियां एक घटक प्रकट करने के लिए समझ में नहीं आती हैं, लेकिन असेंबली इडेंटिटी करता है।

एम्बेड करें::

MT.EXE उपकरण का उपयोग करके आप एक dll में एक प्रकट एम्बेड कर सकते हैं

mt.exe -manifest filename.dll.manifest -outputresource:filename.dll;#2 

निकालें:

mt.exe -inputresource:filename.dll;#2 -out:filename.dll.extracted.manifest 

यहाँ संबंधित जानकारी के बारे में अधिक लिंक कर रहे हैं:

एक और डीएलएल उदाहरण एम्बेड करें: http://msdn.microsoft.com/en-us/library/ms235591(v=VS.100).aspx

एक एसएक्सएस walkthrough: http://msdn.microsoft.com/en-us/library/ms973915.aspx

2

उपयोग कर रहा हूँ सबसे अनुप्रयोगों में, एक प्रकट आम तौर पर व्यय/मेजबान क्षुधा के लिए लागू किया जाता है - के रूप में इस स्तर पर एक समझता है कि कैसे सभी निर्भर विधानसभाओं और उनकी क्षमताओं को एक साथ जाल है।

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

+0

हां मैंने इसे पाया। क्या आप ओएस द्वारा मैनिफेस्ट कैशिंग के बारे में कुछ जानते हैं? –

+0

क्षमा करें, कैशिंग के बारे में कुछ भी नहीं पता (ओटोम अनुमान: यह लोड समय पर केवल EXE के संसाधनों से बाहर नहीं पढ़ता है और कोई भी कैशिंग पारदर्शी होगी - मुझे लगता है कि आप यह नहीं पूछेंगे कि यह सीधा था या नहीं!) –

+2

यह सच नहीं है । डीएलएल में प्रकट होते हैं और प्रकट होते हैं। इसे सक्रियण संदर्भ API का उपयोग करके मैन्युअल रूप से करने की आवश्यकता है। –

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