c# - फ़ाइल या असेंबली लोड नहीं हो सका... एक प्रोग्राम को गलत प्रारूप के साथ लोड करने का प्रयास किया गया था(System.BadImageFormatException)




console-application (14)

मेरे पास दो परियोजनाएं हैं, ProjectA और ProjectBProjectB एक कंसोल एप्लीकेशन है, जो ProjectB ए पर निर्भर करता है। कल, सबकुछ ठीक काम कर रहा था, लेकिन अचानक जब मैं ProjectB चलाता हूं तो मुझे यह मिलता है:

BadImageFormatException unhandled था :
फ़ाइल या असेंबली 'ProjectA, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = null' या इसकी निर्भरताओं में से एक लोड नहीं हो सका। एक गलत प्रारूप के साथ एक प्रोग्राम लोड करने के लिए एक प्रयास किया गया था।

दोनों नियमित परियोजनाएं हैं, बिना किसी अन्य गैर-नेट परियोजनाओं पर निर्भरता। दोनों पूरी तरह से हैं। नेट - कोई मूल कोड नहीं है, और कोई पी / Invoke नहीं है। मेरे पास अन्य परियोजनाएं हैं जो प्रोजेक्ट ProjectA पर निर्भर करती हैं और अभी भी ठीक काम करती हैं।

चीजें मैंने कोशिश की है:

  • सुनिश्चित करें कि बिल्डिंग चेकबॉक्स के साथ दोनों परियोजनाएं "कोई भी CPU" पर सेट हैं। वो हैं।
  • सुनिश्चित करें कि दोनों परियोजनाएं एक ही लक्ष्य फ्रेमवर्क (.NET 4.0 क्लाइंट प्रोफ़ाइल) के लिए हैं
  • ProjectB -> संदर्भ -> ProjectA -> गुणों के तहत, सुनिश्चित करें कि "कॉपी स्थानीय" को "True" _ पर सेट किया गया है (मैंने सत्यापित किया है कि ProjectA.dll को सही तरीके से कॉपी किया जा रहा है)
  • समाधान को साफ / पुनर्निर्माण करें। मैंने दोनों परियोजनाओं में / bin और / obj फ़ोल्डरों को मैन्युअल रूप से हटाने का भी प्रयास किया।
  • विजुअल स्टूडियो को पुनरारंभ करें। मेरे कंप्यूटर को पुनरारंभ करें।
  • भंडार की पूरी तरह से नई प्रतिलिपि देखें।

लेकिन मुझे अभी भी वही त्रुटि मिलती है। मुझे नहीं पता कि मैंने इसका कारण क्या किया, न ही इसे कैसे ठीक किया जाए। कोई विचार?


इनमें से कोई भी समाधान मेरे लिए काम नहीं करता - लेकिन बिन और ओबीजे फ़ोल्डर्स की सामग्री को हटाकर सबकुछ फिर से शांत हो गया।


क्या आप cmd से अपनी .exe फ़ाइल चलाने की कोशिश कर रहे हैं? यह मेरी गलती थी। बस इसे क्लिक करके .exe फ़ाइल चलाएं। यदि यह विंडोज 8.1 / विंडोज सर्वर 2012 आर 2 x64 के लिए .NET कोर एससीडी है।


मुझे एक परियोजना में इस समस्या का भी सामना करना पड़ता है, कुछ मिनटों के बाद मुझे समाधान मिला, यह समस्या सीपीयू कॉन्फ़िगरेशन के कारण है, यदि आप विजुअल स्टूडियो 2010 या वीएस 2013 का उपयोग कर रहे हैं, तो बस प्रोजेक्ट की प्रॉपर्टीज प्राप्त करें और फिर साइड बार से संकलन का चयन करें और 5 ड्रॉप-डाउन होगा, 5 वें ड्रॉप-डाउन लक्ष्य सीपीयू होगा: आपको इसे किसी भी CPU के बजाय अपनी आवश्यकताओं के अनुसार x86 या x64 पर सेट करना चाहिए।

मेरी समस्या को x86 में बदलने के बाद हल किया गया था।


मुझे एक ही समस्या का सामना करना पड़ा। यह नीले रंग से निकला और यह मेरे लिए अजीब लग रहा था।

अपवाद स्नैपशॉट में, फ्यूजनलॉग के लिए, मैंने निम्नलिखित संदेश को इसके भीतर देखा:

... सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework64 ...

संलयन लॉग के बारे में अधिक जानकारी: http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx

सभी परियोजनाओं में किसी भी सीसीपीयू का लक्ष्य सीपीयू था। मैंने x86 के लक्ष्य सीपीयू में एप्लिकेशन प्रोजेक्ट (प्रोजेक्ट जो अन्य सभी परियोजनाओं का संदर्भ देता है) बदल दिया। यह अब काम करता है।

यह सुनिश्चित नहीं है कि लक्षित सीपीयू मिश्रण कैसे स्पष्ट कारण के लिए हुआ, लेकिन ऐसा हुआ।


मुझे भी बिल्कुल यही समस्या है। मैंने प्रोजेक्ट ए के "प्लेटफार्म लक्ष्य" ("प्रोजेक्ट ए" (राइट क्लिक) -> गुण-> बिल्ड -> "प्लेटफार्म लक्ष्य") को x86 पर सेट किया था लेकिन प्रोजेक्ट बी को "कोई भी CPU" पर रखा था। प्रोजेक्ट बी को "x86" में सेट करना इसे ठीक किया गया है।


मुझे विजुअल स्टूडियो 2015 में यूनिट परीक्षण (xunit) चलाने में यह समस्या थी और निम्न फिक्स में आया:

Menu Bar -> Test -> Test Settings -> Default Processor Architecture -> X64

मेरी मशीन ने मुझे एक BIOS अपडेट दिखाया और मुझे आश्चर्य हुआ कि क्या इस त्रुटि के अचानक पॉप-अप के साथ इसका कुछ संबंध है। और मैंने अद्यतन करने के बाद, त्रुटि हल हो गई और समाधान ठीक बनाया गया।


मेरे पास एक ही समाधान में कई परियोजनाओं के साथ एक ही समस्या थी, मैंने लक्षित सीपीयू के लिए सभी लक्ष्य ढांचे को .NET Framework 4 और x86 पर सेट करना समाप्त कर दिया और अंततः इसे सफलतापूर्वक संकलित किया गया।


यदि आप वीएस में एमएसआई इंस्टॉलर के साथ 64 बिट प्रोजेक्ट को पैकेज करने का प्रयास कर रहे हैं तो आप यह समस्या भी देख सकते हैं। ("इसका कारण यह है कि .msi फ़ाइल के साथ पैक किया गया मूल शिम 32-बिट निष्पादन योग्य है।")

अधिक जानकारी के लिए यहां देखें: http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx


यदि आपके पास आपके प्रोजेक्ट में कम से कम 1 32 बिट डीएल \ exe है तो आपको IIS7 में TRUE के लिए "32 बिट एप्लिकेशन सक्षम करें" सेटिंग पूल सेटिंग को बदलने की आवश्यकता हो सकती है।


यह थोड़ा मजाकिया हो सकता है, लेकिन मुझे सामान्य कामकाजी कोड के साथ एक ही समस्या थी। मैंने StreamWriter और StreamReader जोड़ा और यह त्रुटि दी। समाधान था कि मैंने उस कोड को टिप्पणी ब्रैकेट में लिया था, फिर डीबग किया और फिर से काम करना शुरू कर दिया


सबसे पहले मुझे यह एक पुरानी परियोजना के साथ वीएस2017 में मिला, जिसमें मुझे सभी परियोजनाओं को ढांचे 4.7 में एक छोटे से बदलाव और अपरिवर्तित करने की आवश्यकता थी।

कई अन्य लोगों ने इस मुद्दे को ठीक कर सकते हैं चुनने का उल्लेख किया है।

वहां कुछ जगहें हैं जिन्हें आपको करने की आवश्यकता है, और यह ड्रॉपडाउन से चुनने के समान ही आसान नहीं हो सकता है। यह मेरे लिए तय है:

1) आपको इसे यहां करने की ज़रूरत है:

2) और Configuration Manager में भी (समाधान पर राइट क्लिक करें)

लेकिन क्या होगा यदि यह वहां नहीं है ???

फिर New क्लिक करें और इन सेटिंग्स का चयन करें: ( धन्यवाद @RckLN )


हो सकता है कि आप सर्वर पर तैनाती के बाद अपनी वेबसाइट के साथ समस्या का सामना कर रहे हों।

फिर आपको 32-बिट अनुप्रयोगों को सक्षम करने के लिए अपने एप्लिकेशन पूल को समायोजित करने की आवश्यकता है।

कदम:

  1. ओआईएस प्रबंधक खोलें
  2. एप्लिकेशन पूल पर क्लिक करें
  3. आप जिस भी एप्लिकेशन पूल का उपयोग कर रहे हैं उसका चयन करें
  4. दाएं फलक से, उन्नत सेटिंग्स पर क्लिक करें ...
  5. सही करने के लिए 32-बिट अनुप्रयोग सक्षम करें सेट करें


Visual Studio Build स्टेप्स का उपयोग करके Visual Studio Build ऑनलाइन (वीएसटीएस) के माध्यम से एक परियोजना का निर्माण करते समय मुझे यह मिला।

समाधान था:

  • मौजूदा स्रोत फ़ोल्डर हटाएं
  • स्पष्ट रूप से निर्भरता सहित सभी विजुअल स्टूडियो बिल्डों के लिए मंच में 'कोई भी CPU' सेट करें (नीचे स्क्रीनशॉट देखें)।
  • निर्माण फिर से चलाएं






badimageformatexception