遇到一個程序打不開的錯誤,如圖:
問題詳細信息如下:
問題簽名:
問題事件名稱: 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 開發的程序集。
解決打開程序時,提示“程序已停止工作”的問題方法是,在詳細信息裡找到具體的錯誤,然後解決相關的問題。