Badimageformatexception con .Net ilmergend DLL in Windows 7 64
-
17-09-2020 - |
Domanda
Sto sviluppando in Windows 7 a 64 bit con Visual Studio 2008. Ho una raccolta di librerie di classe che mi sono unito in una singola DLL usando ilMerge. Quando provo a usare questo DLL unito, tuttavia, ottengo
.[ Badimageformatexception : impossibile caricare il file o il gruppo 'Mymergeddll' o una delle sue dipendenze. È stato effettuato un tentativo di caricare un programma con un formato errato.]
Ho cercato in giro per l'aiuto con questo e sembrava che avessi bisogno di impostare la proprietà Build in ogni progetto a Mymergeddll per target x86, quindi l'ho fatto. Ho anche impostato tutti i progetti non-Mstem nel servizio Web in cui mi riferisco a MymergedDLL per target x86. Sto ancora ricevendo questo errore, tuttavia.
Se questo blog entrata < / A> è da credere, posso ottenere questo errore come risultato del fare:
public class SpecificClass: BaseClass: where T : class { }
.
Soluzione
L'ho capito per lavorare e penso che sia stato di fare due cose:
- .
- MymergedDLL è stato costruito utilizzando un paio di altri gruppi che ho il controllo, ma quelle assemblee non erano impostate su Target X86.Ho ricostruito quelle assemblee che mirano X86, ricostruite i gruppi che compongono MymergedDLL e ri-unito quegli assembli per formare una nuova copia di MymergedDLL.
- L'applicazione della console che utilizza MymergedDLL è stata impostata su Target X86 in modalità Debug ma non in modalità di rilascio, quindi perché funzionerebbe in modalità Debug ma fornire la modalità
BadImageFormatException
in modalità di rilascio.
La prima cosa potrebbe non essere stata necessaria.Penso di aver solo bisogno del consumatore di Mymergeddll per target anche x86 in modalità di rilascio.Non ho mai capito di capire quale versione di IlMerge stavo usando, quindi l'ho appena ri-installato con l'ultimo MSI che ho trovato sul sito di Microsoft.
Altri suggerimenti
Hai ricontrollato la versione di ILMERGE che stai utilizzando?
Chiedo perché una vecchia versione antica di AspNet_Merge (che fondamentalmente la stessa fusione di DLL tra le altre cose) ci ha causato gli stessi problemi che stai descrivendo.Sono andato in dettaglio quando rispondi a Questa domanda per qualcun altrosu così.
Potrebbe valere la pena avere una rapida occhiata alla DLL in ildilasmo (riflettore tende a cadere quando si tenta di decompilare queste cattive DLL - forse non disputatamente) e vedere se è possibile distinguere il punto di corruzione e ciò che corrisponde aIl tuo codice come può far luce sul problema.