2010-12-02 11 views
4

可能性の重複:
BadImageFormatException during .Net assembly load issue悪いイメージフォーマット例外問題

私はアセンブリをロードし、そのバージョンを抽出したexeファイルを実行しようとしています。ファイルはwin xpで正常に動作していますが、win 7で実行している間にクラッシュすると次の例外が発生します。

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]. 

誰でもこの問題に直面しましたか?この問題の解決策は何でしょうか?

答えて

3

あなたは(時には64ビットのWindowsのための特別なバージョンが利用可能です)ONLY

15

を64ビットのWindowsとDLLイスト32ビットを実行している場合、これは最も可能性の高い、いくつかの原因を持つことができるか確認してくださいロードしようとしているということです64ビットマシン上の32ビットマネージドdll、またはその逆。

これは、動的にロードしているdllがネイティブdllでないか、dllファイルが壊れていることを意味する場合もあります。

例えば、異なるバージョンの特定のコンポーネントを再構築すると、それを使用している他のDLLよりも高いバージョンの.Netフレームワークを使用しているdllがある可能性があります。

This questionも同様の理由から、012ビットのアプリケーションを32ビットモードで実行するように強制する方法を示唆しているので、32ビットの依存関係を読み込むことができます。

関連する問題