c# DLL संदर्भ परियोजना बिन में नकल नहीं




.net visual-studio (3)

प्रोजेक्ट ए संदर्भ प्रोजेक्ट बी , और प्रोजेक्ट बी एक बाहरी डीडीएल (NuGet का उपयोग करके बहाल) का संदर्भ देता है। DLL को प्रोजेक्ट A के बिन फ़ोल्डर ( प्रोजेक्ट B के DLL के साथ) में कॉपी किया जाना चाहिए:

मेरे मामले में, प्रोजेक्ट A को चलाते समय, मुझे निम्न अपवाद मिलते हैं:

फ़ाइल या असेंबली को लोड नहीं कर सका 'PostSharp, संस्करण = 3.2.18.0, संस्कृति = तटस्थ, PublicKeyToken = b13fd38b8f9c99d7' या इसकी एक निर्भरता। सिस्टम निर्दिष्ट फाइल का पता लगाने में नाकामयाब रहा।

DLL को प्रोजेक्ट A के बिन में कॉपी नहीं किया जा रहा है। प्रोजेक्ट बी के अन्य सभी बाहरी संदर्भों को ठीक-ठीक कॉपी किया जा रहा है, जो कि मेरे लिए भ्रामक है।

Copy Local शामिल सभी संदर्भों के लिए सही है। उदाहरण:

मैं यह कैसे करु?

नोट: विज़ुअल स्टूडियो 2013 का उपयोग करना।


जो विकल्प मुझे मिले, वे थे:

  • Project A में PostSharp का संदर्भ जोड़ें
  • प्रोजेक्ट B में डमी कोड जोड़ें ताकि कंपाइलर यह पता लगा ले कि संदर्भ का उपयोग किया जा रहा है।
  • DLL की प्रतिलिपि बनाने के लिए एक बिल्ड ईवेंट जोड़ें।

मुझे उपरोक्त कोई भी समाधान पसंद नहीं है। वे मेरी राय में हैक हैं और लंबे समय में केवल अधिक अप्राप्य समाधान के लिए करेंगे।

मैंने एक सामान्य आउटपुट निर्देशिका का उपयोग करके समस्या को ठीक किया है। यह कई लोगों द्वारा अनुशंसित समाधान प्रतीत होता है। मैं भी बहुत तेजी से निर्माण समय का अनुभव किया है। इस पोस्ट देखें।


जब मैं इस समस्या में भाग गया तो यह था कि मैंने एक परियोजना का नाम बदल दिया, लेकिन विधानसभा का नाम नहीं बदला - यह समाधान में किसी अन्य परियोजना के विधानसभा नाम के समान था।


मैंने प्रोजेक्ट B पर कुछ डमी (अप्रयुक्त) कोड जोड़े हैं, जिससे DLL की आवश्यकता होती है।

इस प्रकार, कंपाइलर अनुमान लगाएगा कि उसे DLL को प्रोजेक्ट A आउटपुट में कॉपी करना होगा।





solution