Jeg kaller funksjoner fra en 32-biters ikke-administrert DLL på et 64-biters system. Det jeg får er:
BadImageFormatException: Det ble gjort et forsøk på å laste et program med feil format. (Unntak fra HRESULT: 0x8007000B)
Først hadde jeg prosjektene mine satt til hvilken som helst CPU-plattform, så jeg endret dem begge til x86, men denne feilen oppstår fortsatt. Det er virkelig den eneste løsningen jeg vet for dette.
DLL-ene er ikke korrupte eller noe, fordi jeg kan bruke dem med andre programmer (som jeg ikke har kilden til). Jeg tenkte at det kanskje ikke var å finne en avhengighet, men jeg sjekket og de er alle der. Plus, ville det ikke kaste en DllNotFoundException
i så fall?
Hva annet kan jeg gjøre? Og før du sier " Bruk en 64-biters ustyrt DLL i stedet, " la meg påpeke at det ikke er en.;)
Hvis du prøver å kjøre 32-biters applikasjoner på IIS 7 (og / eller 64-biters OS-maskin), får du den samme feilen. Så, fra IIS 7, høyreklikk på applikasjonene og gå til "avanserte innstillinger" og endre "Aktiver 32-biters applikasjoner" til "SANT".
Start nettstedet ditt på nytt, og det skal fungere.
På en eller annen måte hadde avkrysningsruten Build i Configuration Manager blitt fjernet for den kjørbare filen min, så den kjørte fortsatt med den gamle Any CPU-build. Etter at jeg fikset det, klaget Visual Studio over at den ikke kunne feilsøke forsamlingen, men det ble løst med en omstart.
Jeg hadde nettopp dette problemet også. Prøvde alle forslagene her, men de hjalp ikke.
Jeg fant en annen ting å sjekke som fikset det for meg. I Visual Studio høyreklikker du på prosjektet og åpner "Egenskaper". Klikk på "Compile" (eller "Build") -fanen og klikk deretter på "Advanced Compile Options" nederst.
Sjekk rullegardinmenyen "Target CPU". Den skal samsvare med "plattformen" du bygger. Det vil si at hvis du bygger "Enhver CPU", skal "Target CPU" si "Enhver CPU". Gå gjennom alle plattformene dine ved å gjøre dem aktive og sjekk denne innstillingen.