Visual Studio 2010 kullanarak C # ile yazılmış ve tam .NET Framework 4'ü hedefleyen bir Windows hizmetim var. Bir Debug derlemesinden çalıştırdığımda hizmet beklendiği gibi çalışıyor. Ancak, bir Sürüm yapısından çalıştırdığımda bir System.BadImageFormatException alıyorum (ayrıntılar aşağıda). İnternette bir çözüm arıyordum ama şimdiye kadar bulduğum her şey bir çözüm bulmama yardımcı olmadı.
Sorun hem Windows 7 64 bit (dev) hem de Windows XP SP3 32 bit (hedef) sistemlerde mevcuttur.
İşte şimdiye kadar denediğim şey:
- Platform Hedefi gibi doğrulanmış derleme ayarlarının tümü aynıdır (x86).
- Derleme ikili dosyalarının geçerli olduğundan emin olmak için / verbose seçeneğiyle peverify kullanıldı.
- Yükleme sorunlarını aramak için fuslogvw kullanır.
- Eksik dosyaları veya derlemeleri aramak için CheckAsm kullanılır.
Tüm bu kontroller hiçbir şeyi değiştirmedi. Kurumsal ustalarımın sırlarını korumak için bazı isimler değiştirilerek istisna bilgilerinin tam metnini aşağıya ekledim.
System.BadImageFormatException işlenmedi Mesaj = Dosya veya derleme 'XxxDevices, Sürüm = 1.0.0.0, Culture = nötr, PublicKeyToken = null' veya bağımlılıklarından biri yüklenemedi. Yanlış biçime sahip bir program yüklenmeye çalışıldı. Kaynak = XxxDevicesService FileName = XxxDevices, Version = 1.0.0.0, Culture = nötr, PublicKeyToken = null FusionLog = Montaj yöneticisi şuradan yüklenir: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll Yürütülebilir c: \ Dev \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe altında çalışıyor --- Ayrıntılı bir hata günlüğü aşağıdadır. === Bağlanma öncesi durum bilgisi === GÜNLÜK: Kullanıcı = XXX GÜNLÜK: DisplayName = XxxDevices, Sürüm = 1.0.0.0, Kültür = nötr, PublicKeyToken = null (Tam olarak belirtilmiş) GÜNLÜK: Appbase = file: /// c: / Dev / TeamE / bin / Release / GÜNLÜK: İlk ÖzelYol = NULL Çağrılan derleme: XxxDevicesService, Sürüm = 1.0.0.0, Kültür = nötr, PublicKeyToken = null. === LOG: Bu bağlama, varsayılan yükleme bağlamında başlar. GÜNLÜK: Uygulama yapılandırma dosyasını kullanarak: c: \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe.Config GÜNLÜK: Ana bilgisayar yapılandırma dosyasını kullanarak: GÜNLÜK: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config'den makine yapılandırma dosyasını kullanarak. GÜNLÜK: İlke şu anda referansa uygulanmıyor (özel, özel, kısmi veya konuma dayalı derleme bağlama). GÜNLÜK: Yeni URL dosyası indirilmeye çalışılıyor: /// c: /TeamE/bin/Release/XxxDevices.DLL. HATA: Derlemenin kurulumu tamamlanamadı (hr = 0x8007000b). İnceleme sonlandırıldı. Yığın izleme: XxxDevicesService.Program.Main (String [] değiştirgeler) System.AppDomain._nExecuteAssembly (RuntimeAssembly, String [] args) Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback geri çağrısı, Nesne durumu, Boolean ignoreSyncCtx) System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback geri çağrısı, Nesne durumu) System.Threading.ThreadHelper.ThreadStart () InnerException:
XxxDevicesService
? Belirli bir platform için derlenmiş mi (örneğin 32 bit)? Eğer öyleyse, platformunuzu 32 bit olarak derlemelisiniz.