2008-10-27 12 views
11

मैं एक तृतीय पक्ष एपीआई का उपयोग कर रहा हूं जिसे 2 डीएलएल में परिभाषित किया गया है। मैंने अपने प्रोजेक्ट में उन डीएलएल को शामिल किया है और उनके लिए संदर्भ निर्धारित किए हैं। अब तक सब ठीक है।सी #: निर्भर डीएलएल कैसे शामिल करें?

हालांकि, इन डीएलएल में कम से कम एक आश्रित डीएलएल है जो रनटाइम पर नहीं मिल सकता है। मैंने प्रोजेक्ट में लापता डीएलएल की प्रतिलिपि बनाई और 'आउटपुट टू कॉपी' ध्वज सेट किया लेकिन सफलता के बिना।

इस परियोजना को बताने के लिए मुझे यहां क्या करना चाहिए जहां इसे निर्भर डीएलएल मिलना चाहिए?

स्पष्टीकरण मुझे याद आ DLL के लिए एक संदर्भ जोड़ने की कोशिश की लेकिन के रूप में यह एक नेट घटक के रूप में पहचाना गया था। निराशा में, मैंने इसे सीधे आउटपुट फ़ोल्डर में जोड़ा लेकिन सफलता के बिना।

अंत में, मैंने पीसी पर एपीआई स्थापित किया और यह सब काम किया। स्थापना PATH चर सेट करता है और DLL स्थापना फ़ोल्डर में पाया जाता है। लेकिन परियोजना को अपने आंतरिक फ़ोल्डर्स में से किसी एक को देखने के लिए कैसे बताना है?

+0

जब आप कहते हैं कि "आपने गायब डीएलएल को परियोजना में कॉपी किया है" - क्या आपका मतलब है कि आपने इसका संदर्भ जोड़ा है, या सिर्फ फाइल कॉपी की है? संदर्भ जोड़ने के लिए शायद सबसे अच्छा है। –

उत्तर

2

ऐसा लगता है कि आपको तीसरे पक्ष की लाइब्रेरी को बेहतर ढंग से समझने की आवश्यकता है और यह अपनी निर्भरताओं का उपयोग कैसे करता है। अगर एपीआई की स्थापना समस्या हल करती है, लेकिन फ़ाइलों को मैन्युअल रूप से कॉपी नहीं करता है, तो आप कुछ खो रहे हैं। या तो एक लापता फ़ाइल है, या कुछ पर्यावरण चर या रजिस्ट्री प्रविष्टि की आवश्यकता है। दो चीजें जो वास्तव में आपकी मदद करेंगे, वह निर्भर उपकरण है (जो सी ++ स्थापना का हिस्सा है) और procmon, जो आपको रनटाइम पर उपयोग की जाने वाली सभी रजिस्ट्री कुंजियों और फ़ाइलों को बताएगा।

यदि आप भाग्यशाली हैं, तो यह केवल एक फ़ाइल है जिसे आप याद कर रहे हैं। यदि यह सब कुछ है, तो आप सफल बिल्ड पर सही स्थान पर आवश्यक फ़ाइलों की प्रतिलिपि बनाने के लिए प्रोजेक्ट के "ईवेंट बनाएं" अनुभाग का उपयोग कर सकते हैं। यदि नहीं, तो आपको इसे किसी अन्य तरीके से हल करना होगा - या तो एपीआई स्थापित करने की आवश्यकता है, या अपनी खुद की स्थापना परियोजना रोलिंग करनी होगी।

0

आप कैसे तैनात कर रहे हैं? बस फ्लैट फाइलें? यदि ऐसा है, तो इसे तब तक काम करना चाहिए जब तक कि फ़ाइल आउटपुट निर्देशिका में फ़ाइल समाप्त न हो जाए। क्या यह?

यदि आप एक और तैनाती का उपयोग कर रहे हैं, तो आपको उस इंजन को शामिल करने के लिए उसे बताना होगा। यह प्रत्येक एमएसआई/क्लिकऑन/आदि के लिए अलग है।

0

आप या तो धीरे-धीरे डाउनस्ट्रीम निर्भरताओं को अपनी परियोजना के संदर्भ के रूप में जोड़ सकते हैं। यह बोझिल है, और कुछ हद तक नाजुक

या आप माइक्रोसॉफ्ट से "Depends.exe" जैसे टूल का उपयोग अपने शीर्ष स्तर की असेंबली का निरीक्षण करने और निर्भरताओं को संदर्भ सूची प्राप्त करने के लिए कर सकते हैं।

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