मेरे पास सी # रैपर कोड है जो मूल (सी ++) डीएलएल से कार्यों को कॉल करता है। वर्तमान में, मैं सी # डीएल में एक संदर्भ जोड़ सकता हूं और 'कॉपी स्थानीय' विकल्प को सत्य पर सेट कर सकता हूं। हालांकि देशी डीएल, जो एक निर्भरता है, को संदर्भ के रूप में जोड़ा नहीं जा सकता है - इसलिए कोई 'कॉपी स्थानीय' विकल्प नहीं है।क्या बिन फ़ोल्डर में मूल डीएलएल कॉपी करने के कोई बेहतर तरीके हैं?
मैं निम्नलिखित की कोशिश की है दृष्टिकोण
$(TargetFolder)
copy "$(ProjectDir)Libs\NQuantLibc.dll" "$(TargetDir)NQuantLibc.dll"
को Libs फ़ोल्डर से देशी dll कॉपी करने के लिए देशी dll के रूप में शामिल एक के बाद निर्माण की घटनाओं का उपयोग करना परियोजना में एक मौजूदा आइटम (जोड़ें -> मौजूदा आइटम -> डीएल शामिल करें)। यह विकल्प मुझे 'कॉपी स्थानीय' विकल्प का उपयोग करने की अनुमति देता है। इस दृष्टिकोण का नकारात्मक पक्ष यह है कि डीएल हमेशा एक परियोजना आइटम के रूप में दिखाता है।
मैंने "सभी फ़ाइलें दिखाएं" की कोशिश की जिसने मुझे लिब्स फ़ोल्डर देखने की अनुमति दी। इसके बाद मैं प्रोजेक्ट में NQuantLibc.dll फ़ाइल शामिल करता हूं जिसने मुझे 'कॉपी स्थानीय' विकल्प सेट करने की अनुमति दी। हालांकि, इसने मुझे एक अप्रत्याशित परिणाम दिया। इसने एक लिब्स उपफोल्डर बनाया जिसमें बिन फ़ोल्डर (जैसे bin/debug/Libs/NQuantLibc.dll
) के भीतर डीएल शामिल है। आदर्श नहीं है क्योंकि सी # डीएल देशी डीएल को सही ढंग से कॉल करने में सक्षम नहीं था क्योंकि यह वहां नहीं था।
उपरोक्त दोनों उपरोक्त विकल्प काम करते हैं। क्या बिन फ़ोल्डर में मूल डीएलएल की प्रतिलिपि बनाने के कोई बेहतर तरीके हैं जैसे कि निर्भरता हमेशा हल हो जाएगी? वैकल्पिक रूप से, क्या इस प्रकार के परिदृश्य के लिए एक अलग दृष्टिकोण है?
संबंधित प्रश्न: http://stackoverflow.com/questions/126331/specifying-a-non-net- निर्भरता-in-visual-studio – Ahmad