Saya memiliki layanan Windows yang ditulis dalam C # menggunakan Visual Studio 2010 dan menargetkan penuh .NET Framework 4. Ketika saya menjalankan dari Debug membangun layanan berjalan seperti yang diharapkan. Namun, ketika saya menjalankannya dari Build rilis, saya mendapatkan System.BadImageFormatException (detailnya di bawah). Saya telah mencari solusi di internet tetapi sejauh ini setiap hal yang saya temukan tidak membantu saya menemukan solusi.
Masalahnya ada pada sistem Windows 7 64-bit (dev) dan Windows XP SP3 32-bit (target).
Inilah yang saya coba sejauh ini:
- Semua setelan build terverifikasi seperti Target Platform sama (x86).
- Menggunakan peverify dengan opsi / verbose untuk memastikan binari assembly valid.
- Menggunakan fuslogvw untuk mencari masalah pemuatan apa pun.
- CheckAsm digunakan untuk mencari file atau assembile yang hilang.
Semua pemeriksaan ini tidak mengubah apa pun. Saya telah menyertakan teks lengkap dari informasi pengecualian di bawah ini, dengan beberapa nama diubah untuk melindungi rahasia master perusahaan saya.
System.BadImageFormatException tidak ditangani Pesan = Tidak dapat memuat file atau assembly 'XxxDevices, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' atau salah satu dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah. Sumber = XxxDevicesService FileName = XxxDevices, Versi = 1.0.0.0, Budaya = netral, PublicKeyToken = null FusionLog = Manajer perakitan dimuat dari: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll Berjalan di bawah executable c: \ Dev \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe --- Log kesalahan terperinci mengikuti. === Informasi status pra-pengikatan === LOG: Pengguna = XXX LOG: DisplayName = XxxDevices, Versi = 1.0.0.0, Budaya = netral, PublicKeyToken = null (Sepenuhnya ditentukan) LOG: Appbase = file: /// c: / Dev / TeamE / bin / Release / LOG: Initial PrivatePath = NULL Perakitan panggilan: XxxDevicesService, Versi = 1.0.0.0, Budaya = netral, PublicKeyToken = null. === LOG: Pengikatan ini dimulai dalam konteks pemuatan default. LOG: Menggunakan file konfigurasi aplikasi: c: \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe.Config LOG: Menggunakan file konfigurasi host: LOG: Menggunakan file konfigurasi mesin dari C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config. LOG: Kebijakan tidak sedang diterapkan ke referensi saat ini (ikatan perakitan pribadi, khusus, parsial, atau berbasis lokasi). LOG: Mencoba mengunduh file URL baru: /// c: /TeamE/bin/Release/XxxDevices.DLL. ERR: Gagal menyelesaikan pengaturan perakitan (jam = 0x8007000b). Probing dihentikan. StackTrace: di XxxDevicesService.Program.Main (String [] args) di System.AppDomain._nExecuteAssembly (perakitan RuntimeAssembly, String [] args) di Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () di System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) di System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state) di System.Threading.ThreadHelper.ThreadStart () InnerException:
XxxDevicesService
? Apakah dikompilasi untuk platform tertentu (misalnya 32 bit)? Jika demikian, maka Anda harus mengkompilasi platform Anda ke 32 bit.