2010-12-02 4 views
4

Possible en double:
BadImageFormatException during .Net assembly load issueimage Mauvais Format problème d'exception

Je suis en train d'exécuter un fichier exe qui charge un montage et extrait sa version. Le fichier fonctionne bien sur win xp mais en l'exécutant sur win 7 il se bloque en donnant l'exception suivante.

Unhandled Exception: System.BadImageFormatException: Could not load file or asse 
mbly 'some.dll' or one of its dependencies. An attempt was made to load a program with 
an incorrect format. 
File name: 'some.dll' 
    at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, 
Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boo 
lean throwOnFileNotFound, Boolean forIntrospection) 
    at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence 
assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) 
    at System.Reflection.Assembly.LoadFrom(String assemblyFile) 
    at NxTools.InstallTools.Utils.MIPSettings.MIPEnvironmentSettings.Main(String[ 
] args) 

WRN: Assembly binding logging is turned OFF. 
To enable assembly bind failure logging, set the registry value [HKLM\Software\M 
icrosoft\Fusion!EnableLog] (DWORD) to 1. 
Note: There is some performance penalty associated with assembly bind failure lo 
gging. 
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fus 
ion!EnableLog]. 

Est-ce que quelqu'un a fait face à ce problème? Quelle pourrait être la solution probable à ce problème?

Répondre

3

S'il vous plaît vérifier si vous utilisez un Windows 64bit et 32bit ist dll SEULEMENT (parfois des versions spéciales pour Windows 64 bits sont disponibles)

15

Cela peut avoir plusieurs causes, le plus probable est que vous essayez de charger un 32bit géré dll sur une machine 64 bits, ou vice versa.

Cela peut également signifier qu'une DLL que vous chargez dynamiquement n'est pas une DLL native ou que le fichier dll est corrompu.

Cela peut signifier que vous avez une DLL qui utilise une version supérieure du framework .Net que d'autres dll qui l'utilisent, si vous avez reconstruit un composant particulier avec une version différente par exemple.

This question couvre-sol similaire, tout comme this one qui suggère également un moyen de forcer votre application 64bit pour fonctionner en mode 32 bits il peut charger la dépendance 32bit.