c# - फ़ाइल या असेंबली या इसकी निर्भरताओं में से एक लोड नहीं हो सका




.net reference (20)

मैं इनमें से एक और "फाइल या असेंबली या इसकी निर्भरताओं में से एक लोड नहीं कर सका" समस्याएं हैं।

अतिरिक्त जानकारी: फ़ाइल या असेंबली 'Microsoft.Practices.Unity, संस्करण = 1.2.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35' या इसकी निर्भरताओं में से कोई भी लोड नहीं हो सका। स्थित असेंबली की स्पष्ट परिभाषा असेंबली संदर्भ से मेल नहीं खाती है। (HRESULT से अपवाद: 0x80131040)

मुझे नहीं पता कि इसका कारण क्या है या कारण खोजने के लिए मैं इसे कैसे डिबग कर सकता हूं।

मैंने अपने समाधान कैटलॉग .csproj फ़ाइलों में एक खोज की है, और जहां मेरे पास एकता है मेरे पास है:

संदर्भ शामिल करें = "माइक्रोसॉफ्ट.प्रैक्टिस.यूरीटी, वर्जन = 2.0.414.0, संस्कृति = तटस्थ, पब्लिककेट टोकन = 31bf3856ad364e35, प्रोसेसर आर्किटेक्चर = एमएसआईएल"

मेरी किसी भी परियोजना में 1.2.0.0 के खिलाफ कहीं भी कोई संदर्भ नहीं मिल रहा है।

कोई विचार यह है कि मुझे इसे हल करने के बारे में कैसे जाना चाहिए?

मैं इस तरह की समस्याओं को डीबग करने के तरीकों पर भी सराहना करता हूं।


  1. जांचें कि क्या आप एक असेंबली का संदर्भ दे रहे हैं जो बदले में एकता के पुराने संस्करण का संदर्भ दे रहा है। उदाहरण के लिए मान लीजिए कि आपके पास ServiceLocator.dll नामक एक असेंबली है जिसे यूनिटी असेंबली के पुराने संस्करण की आवश्यकता है, अब जब आप ServiceLocator संदर्भित करते हैं तो आपको इसे यूनिटी के पुराने संस्करण के साथ प्रदान करना चाहिए, और इससे समस्या आती है।

  2. आउटपुट फ़ोल्डर हो सकता है जहां सभी परियोजनाएं अपनी असेंबली बनाती हैं, एकता का पुराना संस्करण है।

आप पुरानी असेंबली को कौन लोड कर रहे हैं, यह FusLogVw लिए FusLogVw का उपयोग कर सकते हैं, बस लॉग के लिए पथ परिभाषित करें, और अपना समाधान चलाएं, फिर यूनिटी असेंबली लोड होने वाली पहली पंक्ति जहां (FusLogvw में) जांचें, डबल क्लिक करें और कॉलिंग देखें असेंबली, और यहाँ आप जाओ।


5 साल पहले मूल प्रश्न पोस्ट किए जाने के बावजूद समस्या अभी भी बनी हुई है और यह कष्टप्रद है।

क्या गलत हो रहा है यह समझने के लिए सामान्य समाधान सभी संदर्भित असेंबली का पूर्ण विश्लेषण है। इस कार्य को आसान बनाने के लिए मैंने एक टूल (एक विजुअल स्टूडियो एक्सटेंशन) बनाया जो नेट नेट असेंबली (.ddl या .exe फ़ाइल) का चयन करने और हाइटलाइट विवादित या मिस्ड संदर्भों के साथ सभी संदर्भित असेंबली का ग्राफ प्राप्त करने की अनुमति देता है।

यह टूल विजुअल स्टूडियो गैलरी में उपलब्ध है: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734

आउटपुट का उदाहरण:


अगर आपको विंडोज़ XP पर एक एप्लीकेशन खोलकर यह त्रुटि संदेश मिल रहा है तो इसका मतलब है कि आपने नेट ऐपवर्क 4 और सर्विस पैक 3 के बिना काम नहीं कर रहे हैं। आपने बार-बार इंस्टॉल किया है, आपको यह त्रुटि मिल रही है, इसलिए आपको उस ऐप को फिर से इंस्टॉल करना चाहिए, लेकिन पहले जोड़ने और निकालने से अनइंस्टॉल करना चाहिए

अगर यह काम नहीं करता है तो कृपया मुझे दुर्व्यवहार न करें। मैं भी जूनियर हूं


अपनी परियोजना में Web.config / App.config फ़ाइल देखें। देखें कि संस्करण संख्या सही हैं या नहीं।

<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />

यह मेरे लिए काम किया।


आप कहते हैं कि आपके समाधान में बहुत सारी परियोजनाएं हैं ... ठीक है, बिल्ड ऑर्डर के शीर्ष के पास एक के साथ शुरू करें। इसे बनाने के लिए एक प्राप्त करें और एक बार जब आप इसे समझ लेंगे तो आप उन्हें बाकी के लिए एक ही फिक्स लागू कर सकते हैं।

ईमानदारी से, आपको शायद अपने संदर्भ को रीफ्रेश करने की आवश्यकता है। ऐसा लगता है कि आपने या तो अपने संस्करण को अपडेट किया है और संदर्भों को अपडेट नहीं किया है, या यदि आप अपना समाधान स्रोत नियंत्रण में रखते हैं तो यह एक सापेक्ष पथ समस्या है। बस अपनी धारणाओं को सत्यापित करें, और संदर्भ दोबारा जोड़ें।


आपको अपने आउटपुट फ़ोल्डर से अपनी appname.dll फ़ाइल को हटाना होगा। सफाई डीबग और रिलीज फ़ोल्डर्स। पुनर्निर्माण और आउटपुट फ़ोल्डर पुन: उत्पन्न डीएलएल फ़ाइल में प्रतिलिपि बनाएँ।


एक अन्य संभावित कारण: सुनिश्चित करें कि आपने प्रोजेक्ट गुणों में दोनों परियोजनाओं को गलती से एक ही असेंबली नाम नहीं दिया है।


ठीक है यह बहुत बेवकूफ लग सकता है, लेकिन यह बताता है कि मैंने इस बेवकूफ चीज़ पर हर दूसरे समाधान की कोशिश करने और रात बिताने के बाद इस मुद्दे को हल किया।

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

इसलिए मैंने सर्वर को सभी बिन फ़ोल्डर मिला, मैन्युअल रूप से प्रत्येक फ़ाइल को एक-एक करके बदल दिया। (Ctrl + सभी नहीं और प्रतिस्थापित करें .. मैंने कोशिश की: यह काम नहीं किया।) और किसी भी तरह से यह काम किया ...


बिन फ़ोल्डर में मेरे मामले में Unity.MVC3 नामक एक गैर संदर्भ डीएल था, मैंने सफलता के बिना विजुअल स्टूडियो में किसी भी संदर्भ को खोजने की कोशिश की, इसलिए मेरा समाधान इतना आसान था कि बिन फ़ोल्डर से उस डीएल को हटा दें।


माइक्रोसॉफ्ट एंटरप्राइज़ लाइब्रेरी (.NetTiers द्वारा संदर्भित) हमारी समस्या थी, जो बदले में एकता के पुराने संस्करण का संदर्भ दे रहा था। समस्या को हल करने के लिए हमने web.config में निम्नलिखित बाध्यकारी पुनर्निर्देशन का उपयोग किया:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

वैकल्पिक रूप से, आप एंटरप्राइज़ लाइब्रेरी को नवीनतम संस्करण में अपडेट करना चाहते हैं।


मुझे यह भयानक त्रुटि भी मिली और इसके लिए एक समाधान मिला ...

  1. समाधान नाम पर राइट क्लिक करें
  2. स्वच्छ समाधान पर क्लिक करें
  3. विजुअल स्टूडियो को पुनरारंभ करें
  4. गोटो परियोजना गुण >> बिल्ड करें
  5. रिलीज करने के लिए कॉन्फ़िगरेशन बदलें
  6. डिबगिंग शुरू करें (एफ 5)

1), 2)

4), 5)

उम्मीद है कि इससे आपको भी मदद मिलेगी।


मेरे पास आज था, और मेरे मामले में यह मुद्दा बहुत अजीब था:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0" newVersion="3.1.0.0" />
  </dependentAssembly>0.

एक्सएमएल के अंत में भटक गए पात्रों को नोट करें - किसी भी तरह से उन्हें संस्करण संख्या से एक्सएमएल के इस ब्लॉक के अंत तक ले जाया गया है!

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
  </dependentAssembly>

उपरोक्त और voila में बदल गया! सब कुछ फिर से काम किया।


मेरे लिए एकता सी # प्रोटेक्स चेकमार्क के बिना एकता खेल का पुनर्निर्माण करने के लिए काम किया।


मेरे लिए काम करने के बाद।

  • अस्थायी फ़ाइलें निकालें C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ अस्थायी ASP.NET फ़ाइलें
  • वीएसटीएस बंद करें और फिर से खोलें
  • निकालें और एक ही डीएलएल जोड़ें (नोट: आप एक ही मिलान संस्करण जोड़ते हैं)

मेरे लिए, अन्य समाधानों में से कोई भी काम नहीं किया (स्वच्छ / पुनर्निर्माण रणनीति सहित)। मुझे एक और वर्कअराउंड समाधान मिला जो विजुअल स्टूडियो को बंद और फिर से खोलना है

मुझे लगता है कि इस प्रक्रिया में निर्भरताओं को दोबारा जांचने, समाधान और सभी परियोजनाओं को फिर से लोड करने के लिए विजुअल स्टूडियो को मजबूर करता है।


मैं "स्टार्टअप प्रोजेक्ट के रूप में सेट करें" अनलोड / अबाउंड लाइब्रेरी / प्रोजेक्ट।

फिर इसे तैनात किया।

इसने काम कर दिया!

मुझे लगता है कि यह .dll नहीं मिला क्योंकि यह पहली बार असेंबली में नहीं था।


यह मुद्दा मेरे साथ हुआ जहां मेरी आश्रित पुस्तकालयों में से एक "डीएलएल" को "किसी भी सीपीयू" के साथ संकलित कर रहा था जब मूल पुस्तकालय "x64" के संकलन की अपेक्षा कर रहा था।


विरोधाभासी संदर्भों के लिए देखो। एक स्वच्छ और पुनर्निर्माण के बाद भी, विरोधाभासी संदर्भ अभी भी एक समस्या का कारण बनेंगे। मेरी समस्या AForge और Accord के बीच थी। मैंने दोनों संदर्भों को हटा दिया, और विशेष संदर्भ को फिर से चुनने वाले संदर्भों को फिर से जोड़ा (विशेष रूप से मेरे मामले में, केवल एकॉर्ड)।


समाधान एक्सप्लोरर में प्रोजेक्ट (समाधान नहीं) पर राइट क्लिक करें, बिल्ड टैब में प्लेटफ़ॉर्म लक्ष्य चुनें: "कोई भी CPU"।


ओआईएस प्रबंधक खोलें

एप्लिकेशन पूल का चयन करें

फिर आप जिस पूल का उपयोग कर रहे हैं उसका चयन करें

उन्नत सेटिंग्स पर जाएं (दाईं तरफ)

सक्षम 32-बिट अनुप्रयोग को गलत करने के ध्वज को सही पर बदलें।






compiler-errors