若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

疑難排解例外狀況:System.BadImageFormatException

 

當 DLL 或可執行程式的檔案映像無效時,就會擲回 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 使用者請參閱Troubleshooting Interoperability (Visual Basic) 

反映 C++ 可執行檔時可能會擲回這個例外狀況。 這個情況最可能的原因,是因為 C++ 編譯器移除執行檔中的重新定位位置或 .Reloc 區段。 若要在 C++ 執行檔中保留重新配置位址,請在連接時指定 /fixed:no

如需這個例外狀況的其他原因,請參閱 BadImageFormatException 類別。

顯示: