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 { }
.

che è, con un vincolo di classe su un generico. La voce del blog è dal 2007, però, quindi non so se si applica ancora. Volevo un po 'di input da Stackoverflow per quanto riguarda ciò che voi ragazzi pensi che il problema sia prima di andare a rintracciare ogni classe generica nei miei progetti per controllare i vincoli.

Se importa, MymergedDLL è firmato un nome forte. Sto cercando di usare MymergedDLL sia in un'applicazione console che in un servizio Web. Non so se le cose sono forse complicate dal fatto che IIS stia aggiornando o meno ogni volta che ricostruisco il servizio web. Con l'applicazione della console, sembra solo ottenere il BadImageFormatException quando costruisco la modalità di rilascio.

È stato utile?

Soluzione

L'ho capito per lavorare e penso che sia stato di fare due cose:

    .
  1. 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.
  2. 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.
  3. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top