फ़ाइल या असेंबली 'xxx' या उसकी किसी एक निर्भरता को लोड नहीं किया जा सका। एक प्रोग्राम को एक गलत प्रारूप के साथ लोड करने का प्रयास किया गया था


188

मैं बस एक नए फ़ोल्डर में तोड़फोड़ से एक संशोधन की जाँच की। हल खोला और जब मुझे यह मिला:

फ़ाइल या असेंबली 'xxxx' या उसकी किसी एक निर्भरता को लोड नहीं किया जा सका। एक प्रोग्राम को एक गलत प्रारूप के साथ लोड करने का प्रयास किया गया था।

यह वही कोड है जिसे मैंने कुछ समय पहले चेक किया था। अब ऐसा क्यों कर रहा है? मुझे अब उस xxx प्रोजेक्ट के बिन फ़ोल्डर में डिबग के बजाय एक डीबग x86 भी दिखाई देता है। डीबग x86 क्या है और मेरे पास केवल डिबग ही नहीं है जैसे मैंने बिन फ़ोल्डर में उपयोग किया था?


2
क्या आपने सभी का पुनर्निर्माण करने की कोशिश की है? कभी-कभी यह मेरे लिए अजीब निर्भरता के मुद्दों को ठीक करता है ...
mezoid

जवाबों:


246

परियोजना का एक हिस्सा लगता है जैसे x86 के लिए बनाया जा रहा है, जबकि बाकी किसी भी CPU / x64 के लिए बनाया जा रहा है। यह मुझे भी। क्या आप एक x64 (या उह ... IA64) चला रहे हैं?

परियोजना के गुणों की जाँच करें और सुनिश्चित करें कि सब कुछ "किसी भी सीपीयू" के लिए बनाया जा रहा है। f आप विजुअल स्टूडियो में हैं, आप स्क्रीन के शीर्ष पर स्थित टूलबार पर "x86" या "किसी भी CPU" मेनू ("डीबग" / "रिलीज़" मेनू के बगल में) पर जाकर और क्लिक करके सब कुछ देख सकते हैं "विन्यास प्रबंधक..."


1
यह प्रोजेक्ट-> गुण-> बिल्ड, या डीबग-> गुण-> बिल्ड पर भी है। बस अद्यतन VS2015, संस्करण 14.0.25123.00 अपडेट 2। यह अपडेट सिर्फ 5/10/16 (कल!) जारी किया गया था। मुझे प्लेटफ़ॉर्म लक्ष्य x64 पर सेट मिला, जिसके कारण त्रुटि हुई। "किसी भी CPU" पर सेट करने से यह तय हो जाता है।
माइकल डी। ओ'कॉनर

179

यदि आप 64 बिट सर्वर पर IIS 7+ में साइट चलाते समय यह त्रुटि प्राप्त करते हैं, तो आपके पास ऐसी असेंबली हो सकती हैं जो 32 बिट हैं और आपके एप्लिकेशन पूल में "32-बिट एप्लिकेशन सक्षम करें" विकल्प गलत पर सेट होगा; इसे सही पर सेट करें और इसे काम करने के लिए साइट को पुनरारंभ करें।


5
@ तबाही 50 यहाँ। यह उस पर निर्भर करता है जहां त्रुटि होती है। यदि यह विज़ुअल स्टूडियो और कैसिनी वेब सर्वर के माध्यम से है, तो फ्रेजर का अधिकार। यदि यह IIS7 + में होता है, तो निक्स उत्तर शायद सबसे अधिक संभावना है।
कार्ल हेनरिक हेंके

यह मेरे लिए सही उत्तर था (
x6

हां, यह किया। मैंने एक साइट को IIS6 से x86 पर IIS 7 से x64 पर स्थानांतरित कर दिया। आपको बहुत - बहुत धन्यवाद!
लुकास

40

जब .Net SDK के लिए खतरनाक व्यावसायिक ऑब्जेक्ट्स 4 का उपयोग करने का प्रयास करते समय मुझे यह त्रुटि हुई थी ।

वे पांच BusinessObjects * .dll फ़ाइलों को शिप करते हैं, लेकिन उनमें से सभी 64-बिट हैं।

लोड करने के लिए अपना वेबपृष्ठ प्राप्त करने के लिए, मुझे Tools \ Options पर क्लिक करने की आवश्यकता है , फिर इस सेटिंग को VS2013 में बदलें:

यहां छवि विवरण दर्ज करें


मेरे लिए वह विकल्प मौजूद नहीं है। विजुअल स्टूडियो 2010 के तहत मेरे लिए इस स्क्रीन पर एकमात्र विकल्प "नई फ़ाइल-आधारित वेब साइटों और परियोजनाओं के लिए IIS एक्सप्रेस का उपयोग करें"
ड्रू चैपिन

मैंने यह विकल्प वीएस 2017 प्रोफेशनल
एसकेसीएस कमल

33

inetmgr तब एप्लिकेशन पूल में आता है-> आपके पूल की उन्नत सेटिंग-> में "32-बिट एप्लिकेशन सक्षम करें" विकल्प होगा; और IIS को पुनरारंभ करें। फिर से जांचें।!


दूसरा यह। मैंने अपनी साइट के लिए एक नया ऐप पूल बनाया और इस सेटिंग को चालू करना भूल गया।
अल्बाट्रॉसकैफ़

1
यह मेरे लिए भी तय है। केवल दूसरी चीज जो मुझे बदलने की जरूरत थी, वह थी पाइपलाइन को एकीकृत करने के लिए बदलना, क्योंकि इससे मुझे उपरोक्त त्रुटि लागू होने के बाद एक त्रुटि मिली।
एक्सलवैक

7

BadImageFormatException IIS पर चलने वाले एप्लिकेशन पर (वीएस से नहीं चल रहा है, क्योंकि दृश्य स्टूडियो "किसी भी सीपीयू" के लिए बिल्ड का उपयोग करके समस्या को ठीक करता है) निम्नलिखित के कारण हो सकता है:

साइट एक सर्वर है जो x64 है और 32-एप्लिकेशन को सक्षम करने के लिए एप्लिकेशन पूल की डिफ़ॉल्ट सेटिंग गलत थी। और आपके पास 32-बिट असेंबलियाँ हैं

विजुअल स्टूडियो के स्तर पर, यह है:

  1. "AnyCPU" के लिए "लक्ष्य CPU" प्रोजेक्ट सेटिंग बदलें

7

सुनिश्चित करें कि आप "32-बिट को प्राथमिकता दें" के लिए अपनी सेटिंग सत्यापित करें। मेरे मामले में विजुअल स्टूडियो 2012 में यह सेटिंग डिफ़ॉल्ट रूप से जाँची गई थी। बाहरी DLL से कुछ भी उपयोग करने की कोशिश करना तब तक विफल रहा जब तक कि मैं "32-बिट को प्राथमिकता नहीं देता"

यहां छवि विवरण दर्ज करें


4

यह निश्चित रूप से किसी भी सीपीयू के बजाय x86 संगतता के लिए बनाई जा रही कुछ परियोजनाओं के साथ एक मुद्दा है। अगर मुझे लगता था कि मैं कहूंगा कि आपकी परियोजनाओं के बीच के कुछ संदर्भ शायद प्रोजेक्ट संदर्भ होने के बजाय कुछ बिन \ डीबग फ़ोल्डर में dll का संदर्भ दे रहे हैं।

जब किसी प्रोजेक्ट को 'किसी भी सीपीयू' के बजाय x86 के लिए संकलित किया जाता है, तो बिन \ डीबग के बजाय बिन \ x86 \ डीबग फ़ोल्डर में चला जाता है (जो संभवतः आपके संदर्भ देख रहे हैं)।

लेकिन किसी भी मामले में, आपको अपनी परियोजनाओं के बीच परियोजना संदर्भ का उपयोग करना चाहिए।


0

अगर आईआईएस एक्सप्रेस के साथ दृश्य स्टूडियो में काम करते समय और जब प्रकाशित विफल हो तो यह कोशिश करें:यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.