मेरे पास विजुअल स्टूडियो 2010 का उपयोग करके C # में लिखी गई एक Windows सेवा है और पूर्ण .NET फ्रेमवर्क को लक्षित करना है। जब मैं डीबग से चलता हूं तो यह सेवा अपेक्षित रूप से चलती है। हालाँकि, जब मैं इसे रिलीज़ बिल्ड से चलाता हूं तो मुझे एक System.BadImageFormatException (नीचे विवरण) मिलता है। मैं एक समाधान के लिए इंटरनेट पर खोज कर रहा हूं, लेकिन अभी तक मैंने जो कुछ भी पाया है, उससे मुझे समाधान खोजने में मदद नहीं मिली है।
Windows 7 64-बिट (dev) और Windows XP SP3 32-बिट (लक्ष्य) सिस्टम पर समस्या मौजूद है।
यहाँ मैंने अभी तक कोशिश की है:
- प्लेटफ़ॉर्म लक्ष्य जैसी सत्यापित बिल्ड सेटिंग्स सभी समान हैं (x86)।
- असेंबली बायनेरिज़ मान्य थे, यह सुनिश्चित करने के लिए / क्रिया विकल्प के साथ प्रयोग करें।
- किसी भी लोडिंग मुद्दे को देखने के लिए fuslogvw का उपयोग करता है।
- गुम फाइलों या असेंबलियों को देखने के लिए CheckAsm का उपयोग किया।
इन सभी जाँचों से कुछ भी नहीं बदला। मैंने नीचे दी गई अपवाद जानकारी का पूरा पाठ शामिल किया है, जिसमें कुछ नाम मेरे कॉर्पोरेट स्वामी के रहस्यों की रक्षा के लिए बदले गए हैं।
System.BadImageFormatException अनहेल्दी था संदेश = फ़ाइल या असेंबली 'XxxDevices, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = null' या उसकी किसी एक निर्भरता को लोड नहीं किया जा सका। एक प्रोग्राम को एक गलत प्रारूप के साथ लोड करने का प्रयास किया गया था। स्रोत = XxxDevicesService FileName = XxxDevices, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = null FusionLog = असेंबली प्रबंधक से लोड किया गया: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll निष्पादन योग्य c: \ Dev \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe के तहत चल रहा है --- एक विस्तृत त्रुटि लॉग निम्नानुसार है। === राज्य की पूर्व सूचना बाँध === लॉग: उपयोगकर्ता = XXX लॉग: DisplayName = XxxDevices, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = null (पूरी तरह से निर्दिष्ट) लॉग: Appbase = फ़ाइल: /// c: / देव / टीम / बिन / रिलीज़ / लॉग: प्रारंभिक PrivatePath = NULL कॉलिंग असेंबली: XxxDevicesService, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = null। === लॉग: यह बाइंड डिफ़ॉल्ट लोड संदर्भ में शुरू होता है। लॉग: एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल का उपयोग करना: c: \ TeamE \ bin \ रिलीज़ \ XxxDevicesService.vshost.exe.Chfig लॉग: होस्ट कॉन्फ़िगरेशन फ़ाइल का उपयोग करना: लॉग: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config से मशीन कॉन्फ़िगरेशन फ़ाइल का उपयोग करना। लॉग: इस समय (निजी, कस्टम, आंशिक, या स्थान-आधारित असेंबली बाइंड) संदर्भ के लिए लागू नहीं की जा रही नीति। लॉग: नई URL फ़ाइल का डाउनलोड करने का प्रयास: /// c: /TeamE/bin/Release/XxxDevices.DLL। ERR: असेंबली का पूरा सेटअप विफल (hr = 0x8007000b)। जांच समाप्त हो गई। स्टैक ट्रेस: XxxDevicesService.Program.Main (स्ट्रिंग [] args) पर System.AppDomain._nExecuteAssembly (RuntimeAssembly विधानसभा, स्ट्रिंग [] args) Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () पर System.Threading.ExecutionContext.Run (ExecutionContext एक्ज़ीक्यूशन कॉन्टेक्स्ट, कॉन्टेक्स्ट कॉलबैक कॉलबैक, ऑब्जेक्ट स्टेट, बूलियन इग्नू सिंकटैक्स) System.Threading.ExecutionContext.Run (ExecutionContext एक्जिक्यूटिव कॉन्टेक्स्ट, कॉन्टेक्स्ट कॉलबैक कॉलबैक, ऑब्जेक्ट स्टेट) System.Threading.ThreadHelper.ThreadStart () पर InnerException:
XxxDevicesService
? क्या यह एक विशिष्ट मंच (जैसे 32 बिट) के लिए संकलित है? यदि हां, तो आपको अपने प्लेटफॉर्म को 32 बिट पर संकलित करना होगा।