2008-11-27 8 views
82

मैं एक Windows सेवा InstallUtil.exe का उपयोग कर स्थापित करने के लिए कोशिश कर रहा हूँ और त्रुटि संदेशSystem.BadImageFormatException:

System.BadImageFormatException: Could not load file or assembly ' {xxx.exe} ' or one of its dependencies. An attempt was made to load a program with an incorrect format.

क्या देता हो रही है (installutil.exe से) फ़ाइल या विधानसभा लोड नहीं कर सका?


संपादित करें:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe C:\xxx.exe Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1 Copyright (c) Microsoft Corporation. All rights reserved.

Exception occurred while initializing the installation: System.BadImageFormatException: Could not load file or assembly 'file:///C:\xxx.exe' or one of its dependencies. An attempt was made to load a program with an incorrect format..

उत्तर

14

सुनिश्चित करें कि नवीनतम फ्रेमवर्क (एक आप के साथ अपने अनुप्रयोग संकलित) है: (ओ पी द्वारा नहीं) पूर्ण संदेश dup हो रही जिस तरह से अधिक हिट [googleability के लिए] से निकाला पहले पाथ में। इससे मेरे लिए समस्या हल हो गई। यहाँ मिला: http://www.issociate.de/board/post/280574/Installutil_System.BadImageFormatException.html

+0

वह लिंक समाप्त होने लगता है। यद्यपि बहुत आश्चर्यजनक नहीं है। 6 साल पहले। –

+2

यहां यह Archive.org पर है https://web.archive.org/web/20100527204545/http://www.issociate.de/board/post/280574/Installutil_System.BadImageFormatException.html – Epaga

125

पूर्णता के लिए कुछ और अधिक विस्तार के मामले में यह किसी को मदद करता है ...

ध्यान दें कि यह अपवाद इन दिनों एक 32 बिट विशेष लोड करने के लिए प्रयास कर रहा है (/platform:x86) DLL में सबसे सामान्य कारण एक प्रक्रिया जो 64 बिट या इसके विपरीत है (जैसे 64 बिट-विशिष्ट (/platform:x64) डीएलएल को 32 बिट की प्रक्रिया में लोड करें)। यदि आपका platform गैर-विशिष्ट (/platform:AnyCpu) है, तो यह नहीं उठता है (माना जाता है कि कोई संदर्भित निर्भरता गलत गद्दी का नहीं है)।

दूसरे शब्दों में, चल:

%windir%\Microsoft.NET\Framework\v2.0.50727\installutil.exe

या:

%windir%\Microsoft.NET\Framework64\v2.0.50727\installutil.exe

(अन्य ढांचे संस्करणों में स्थानापन्न काम नहीं करेगा: v1.1.4322 (केवल 32-बिट, इसलिए इस मुद्दे को ही नहीं उठता) और v4.0.30319 उपरोक्त में वांछित के रूप में)।

जाहिर है, जैसा कि दूसरे उत्तर में शामिल है, आपको installutil के .NET संस्करण संख्या की भी आवश्यकता होगी, जिसे आप इंस्टॉलर चला रहे EXE/DLL फ़ाइल के> = (अधिमानतः =) के रूप में चल रहे हैं।

अंत में, ध्यान दें कि in Visual Studio 2010, the tooling will default to generating x86 binaries (rather than Any CPU as previously)।

Complete details of System.BadImageFormatException (कहने का एकमात्र कारण बेमेल बिडनेस वास्तव में एक सकल oversimplification है!)।

एक संस्थापक के तहत एक BadImageFormatException के लिए एक और कारण यह है कि in Visual Studio 2010, the default .vdproj Install Project type generates a 32-bit InstallUtilLib shim, even on an x64 system (के लिए पृष्ठ पर "64-बिट प्रबंधित कस्टम कार्रवाई एक System.BadImageFormatException अपवाद फेंक" खोज) है।

+0

मुझे एक ही समस्या थी, जब मैंने ऊपर जो कहा है उसके अनुसार मैं डिबगिंग शुरू करता हूं, मैंने पाया कि प्लेटफ़ॉर्म: x86 के रूप में सेट किया गया था। जब मैंने इसे किसी भी सीपीयू में बदल दिया, तो यह काम किया :) –

+0

धन्यवाद मेरी समस्या किसी भीCPU को निर्दिष्ट नहीं कर रही थी – essanousy

5

ठीक है, यह मेरी समस्या है, और, यह क्या तय है, उपरोक्त के लिए बहुत प्रासंगिक लगता है।

मैं विजुअल स्टूडियो 2010 एक्सप्रेस का उपयोग कर रहा हूं। मैंने एक परीक्षण सेवा लिखी जिसने वास्तव में कुछ भी नहीं किया। यह बाद में असली चीज़ के लिए अभ्यास था।

मैं सेवा में लिखा था और installutil.exe का उपयोग कर इसे स्थापित करने की कोशिश की और निम्न त्रुटि मिला:

System.BadImageFormatException: Could not load file or assembly '{filename.exe}' or one of its dependencies. An attempt was made to load a program with an incorrect format.

अब तक मूल लेखक के रूप में ही।

Ruben's observation विजुअल स्टूडियो 2010 के 32 बिट आउटपुट के बारे में यहां उद्धारकर्ता था।

मैंने installutil.exe के 64-बिट संस्करण का उपयोग किया और सुनिश्चित किया कि विजुअल स्टूडियो 2010 बिल्ड का आउटपुट 32-बिट था। बस थोड़ा अतिरिक्त मूल्य जोड़ने के लिए, आप नवीनतम .NET ढांचे के 32-बिट संस्करण और संबंधित installutil.exeसी: \ Windows \ Microsoft.NET \ framework फ़ोल्डर में पा सकते हैं। installutil.exe के इस संस्करण का उपयोग करके मेरी समस्या ठीक हुई; एक झुकाव के बिना स्थापित सेवा!

मुझे उम्मीद है कि यह किसी और की मदद करेगा।

8

मुझे लगता है कि आप 32-बिट एप्लिकेशन को स्थापित करने के लिए टूल के 64-बिट संस्करण का उपयोग कर रहे हैं। मैंने आज भी इस मुद्दे का सामना किया है और इस फ्रेमवर्क पथ को पूरा करने के लिए उपयोग किया है।

C: \ Windows \ Microsoft.NET \ फ्रेमवर्क \ v4.0.30319

और यह अपने 32-बिट अनुप्रयोग ठीक स्थापित करना चाहिए।

धन्यवाद

सचिन कालिया

1

मामले में यह किसी को भी मदद करता है, मैं इस एक ही अपवाद एक समान प्रश्न के this answer का उपयोग कर ठीक करने में सक्षम था, लेकिन मैं installutil.exe का उपयोग करने से अपवाद नहीं मिला।

0

मुझे एक ही समस्या थी। मैं निष्पादन के लिए मानक कमांड का उपयोग कर रहा हूँ। यह X86 परीक्षणों के खिलाफ X64 ro रन को कॉल कर रहा था। मुझे X86 निर्दिष्ट करने की आवश्यकता नहीं थी और नूनिट-रनर का एक्स 64 संस्करण नहीं था।

0

संक्षेप में, बिल्ड और प्रोजेक्ट \ बिल्ड \ प्लेटफार्म दोनों को 64 बिट सिस्टम पर 64 बिट सेवा सफलतापूर्वक स्थापित करने के लिए x64 पर सेट करना होगा।

संबंधित मुद्दे