2008-12-16 60 views
2

我正在使用Microsoft Visual C#2008 Express Edition。 (我很抱歉 - 這是一個MS Vis C#可用性問題,而不是一個嚴格的編程問題...)代碼僅在調試器中執行 - MS Visual C#

我寫了一個小程序。當我用調試器在MS VC#中運行它時,一切都很好。當我使用「單擊一次」來生成部署(我使用「從CD-ROM」選項而不是「從網站」),然後將其安裝在我的機器上(或另一臺機器上)並且一切都很好,除了一段代碼沒有運行!

未運行的代碼是try/catch循環的「catch」部分。我故意有一個我知道的bug生成異常仍然在應用程序中,我可以測試這個捕獲,捕獲帶來了一個GUI,並要求用戶發回數據給我,在調試器 - 這工作得很好,在獨立的,已發佈的應用程序,這是行不通的

有什麼想法?

我指出我正在運行「Express版本「,因爲一個朋友提到我可能有一個部署」問題「,看起來Express Edition在部署選項上是有限的,可能標準版是我需要的...(因爲我可以使用Windows Installer而不是「點擊一次」發佈方法)。

這是否有任何意義?

感謝幫助!

+0

您是否嘗試過在非調試模式下在VS中運行App? (按Ctrl + F5)。然後會發生什麼? catch block是否被擊中? – BFree 2008-12-16 19:36:32

+0

您如何知道您的異常生成代碼正在執行?也許你也可以發佈。 – Tim 2008-12-16 19:37:14

回答

3

這段代碼在窗體的構造函數/ onload,即以任何機會

-Adeena (誰是努力使這個微軟「視覺」的世界意義上的老Unix命令行C++程序員)?有/無調試器之間在這方面存在已知的區別。修復通常是推遲代碼,直到UI線程處理事件。例如:

protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 
     BeginInvoke((Action)LoadStuff); 
    } 
    void LoadStuff() 
    { 
     // todo... 
    } 
相關問題