疑難排解例外狀況:System.BadImageFormatException
更新:2011 年 4 月
當 DLL 或可執行程式的檔案映像不是有效的 Managed 可執行檔時,就會擲回 BadImageFormatException 例外狀況。
相關秘訣
如果您的應用程式使用 32 位元元件,請確定應用程式永遠會以 32 位元應用程式的形式執行。
如果應用程式專案的 [平台目標] 屬性設定為 AnyCPU,則編譯的應用程式在 64 位元或 32 位元模式下都可以執行。 以 64 位元應用程式的形式執行時,Just-In-Time (JIT) 編譯器會產生 64 位元機器碼。 如果應用程式依賴 32 位元 Managed 或 Unmanaged 元件,則在 64 位元模式下會無法載入該元件。 若要解決這個問題,請將專案的 [平台目標] 屬性設定為 x86,然後重新編譯。請確定您沒有使用以不同 .NET Framework 版本建立的元件。
當使用 .NET Framework 1.0 或 .NET Framework 1.1 開發的應用程式或元件嘗試載入使用 .NET Framework 2.0 SP1 (含) 以後版本開發的組件,或當使用 .NET Framework 2.0 SP1 或 .NET Framework 3.5 開發的應用程式嘗試載入使用 .NET Framework 4 開發的組件時,就會擲回此例外狀況。 BadImageFormatException 例外狀況可以以編譯階段的錯誤形式被報告,也可以以執行階段的例外狀況形式被擲回。 如需範例,請參閱 BadImageFormatException 類別。請確定該檔案映像是有效的 Managed 組件或模組。
當傳遞 Unmanaged 動態連結程式庫或可執行檔給 Load 方法來載入時,就會擲回此例外狀況。如需詳細資訊,Visual Basic 使用者請參閱疑難排解互通性 (Visual Basic)。
備註
反映 C++ 可執行檔時可能會擲回這個例外狀況。 這個情況最可能的原因,是因為 C++ 編譯器移除執行檔中的重新定位位置或 .Reloc 區段。 若要在 C++ 執行檔中保留重新配置位址,請在連接時指定 /fixed:no。
如需這個例外狀況的其他原因,請參閱 BadImageFormatException 類別。
請參閱
工作
參考
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2011 年 4 月 |
新增例外狀況的常見原因。 |
客戶回函。 |