2013年11月28日 星期四

Application has encountered a problem and needs to close. We are sorry for the inconvenience.

Q:
以VB.net撰寫的程式,有一天在英文視窗下執行,突然出現以下錯誤訊息:
XXX.exe has encountered a problem and needs to close.  We are sorry for the inconvenience.
但在其他語系的視窗執行正常,且切換至英文介面亦無問題。



A:
經測試,只要把en目錄改名,程式又正常了,只是缺乏英文介面,因此判斷是en目錄下的XXX.resource.dll 壞掉了,經兩整天的除錯,最後依下列步驟解決了:

  1. 初步判斷式表單的翻譯檔壞掉,因此決定將英文語系的翻譯檔暫時拿掉,但因表單很多,要全部移除,再一一加入專案測試,恐怕很費事,且由於程式一開始就當掉,因此先從程式首先載入的表單著手,果不其然,就 Bingo了。
  2. 移除語系檔的方法是先將FFF.en.resx檔案移走,再編輯XXX.vbproj檔,搜尋 FFF.en.resx,將整段移除。
  3. 重新編譯並執行,如果執行無誤,那就是那個檔壞了。
  4. 之後再把步驟3還原回去,恢復原來樣貌,並在Visual Studio 開啟 FFF form,並切換至英文語系,若出現錯誤訊息,那就表示找到了。
  5. 再做一次步驟3,並開啟 FFF form切換至英文語系,已產生一個新的英文語系檔案,重新翻譯即可。
注意,若你從Visual Studio 開啟 FFF.en.resx檔,並不一定會出現錯誤,必須將表單切換至對應之語系,才會出現錯誤畫面。 

沒有留言: