Ho un servizio Windows scritto in C # che utilizza Visual Studio 2010 e mira a .NET Framework 4. Quando eseguo da una build di debug, il servizio viene eseguito come previsto. Tuttavia, quando lo eseguo da una build di rilascio ottengo un'eccezione System.BadImageFormatException (dettagli di seguito). Ho cercato una soluzione su Internet, ma finora tutto ciò che ho trovato non mi ha aiutato a trovare una soluzione.
Il problema esiste su entrambi i sistemi Windows 7 a 64 bit (dev) e Windows XP SP3 a 32 bit (di destinazione).
Ecco cosa ho provato finora:
- Le impostazioni di build verificate come Platform Target sono tutte uguali (x86).
- Ha usato peverify con l'opzione / verbose per assicurarsi che i file binari dell'assembly fossero validi.
- Utilizza fuslogvw per cercare eventuali problemi di caricamento.
- Ha utilizzato CheckAsm per cercare file mancanti o assembly.
Tutti questi controlli non hanno cambiato nulla. Ho incluso il testo completo delle informazioni sull'eccezione di seguito, con alcuni dei nomi modificati per proteggere i segreti dei miei dirigenti aziendali.
System.BadImageFormatException non è stato gestito Messaggio = Impossibile caricare il file o l'assembly "XxxDevices, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null" o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato. Fonte = XxxDevicesService FileName = XxxDevices, versione = 1.0.0.0, Culture = neutral, PublicKeyToken = null FusionLog = Assembly manager caricato da: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll In esecuzione nell'eseguibile c: \ Dev \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe --- Segue un registro dettagliato degli errori. === Informazioni sullo stato pre-binding === LOG: Utente = XXX LOG: DisplayName = XxxDevices, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null (Fully-specificato) LOG: Appbase = file: /// c: / Dev / TeamE / bin / Release / LOG: Initial PrivatePath = NULL Chiamata all'assembly: XxxDevicesService, versione = 1.0.0.0, Culture = neutral, PublicKeyToken = null. === LOG: questo collegamento inizia nel contesto di caricamento predefinito. LOG: utilizzando il file di configurazione dell'applicazione: c: \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe.Config LOG: utilizzando il file di configurazione host: LOG: utilizzando il file di configurazione della macchina da C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config. LOG: criterio non applicato al riferimento in questo momento (binding di assembly privato, personalizzato, parziale o basato sulla posizione). LOG: Tentativo di download del nuovo file URL: /// c: /TeamE/bin/Release/XxxDevices.DLL. ERR: impossibile completare la configurazione dell'assembly (hr = 0x8007000b). Sondaggio terminato. StackTrace: in XxxDevicesService.Program.Main (String [] args) in System.AppDomain._nExecuteAssembly (assembly RuntimeAssembly, String [] args) presso Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () in System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) in System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state) in System.Threading.ThreadHelper.ThreadStart () InnerException:
XxxDevicesService
? È compilato per una piattaforma specifica (es. 32 bit)? In tal caso, è necessario compilare la piattaforma a 32 bit.