遇到一個程序打不開的錯誤,如圖:

問題詳細信息如下:
問題簽名: 問題事件名稱:CLR20r3 問題簽名 01:rdh-idss.exe 問題簽名 02:1.0.1.0 問題簽名 03:5510d590 問題簽名 04:RDH-IDSS 問題簽名 05:1.0.1.0 問題簽名 06:5510d590 問題簽名 07:92 問題簽名 08:10 問題簽名 09:System.BadImageFormatException
1)百度里查找了很多類似的錯誤,發現彈框總是一樣,詳細信息不盡相同。所以解決此問題的關鍵還是看詳細信息。如上面的詳細信息里的最后,就可以看到這個錯誤:“System.BadImageFormatException”。
2)在我的程序里,我加上了全局異常捕獲,后來就沒彈這個問題了(可能出錯的地方不影響整體)。代碼:
application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);Application.ThreadException += Application_ThreadException;AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
在MSDN的Library中找到System.BadImageFormatException,里面關于這個問題的原因和解決方法已經很清楚。
原因:低版本編譯工具(如 ILDasm.exe 或 installutil.exe)編譯高版本Framework的程序。
方法:使編譯工具和程序版本相對應。
原因:按加載托管程序集的方法加載非托管程序集。如:Assembly.LoadFile(@"System32/Kernel32.dll")
方法:使用DllImportAttribute的方法加載非托管程序集。
原因:DLL 或可執行文件作為 64 位程序集加載,但是它包含 32 位特性或資源。 例如,它依靠 COM 互操作或調用 32 位動態鏈接庫中的方法。
方法:將項目的“平臺目標”屬性設置為 x86(而不是 x64 或 AnyCPU)并重新編譯。
原因:低版本Framework程序集調用高版本程序集。
方法:確保引發該異常的程序集嘗試加載用兼容版本的 .NET Framework 開發的程序集。
解決打開程序時,提示“程序已停止工作”的問題方法是,在詳細信息里找到具體的錯誤,然后解決相關的問題。
新聞熱點
疑難解答