問題背景我的應用程序的工作我的PC(Windows 7)中,但不是另一個(XP)上,我不知道如何繼續診斷問題
我一直在開發我的電腦上的數據庫應用程序(Windows 7,使用Visual Studio 2010 Express),並且它一直按預期工作。我剛將最新版本複製到運行Windows XP的PC上,並引發"Program has encountered an error and needs to close"
錯誤消息。
應用程序事件日誌中的錯誤消息中的信息顯示錯誤發生在initializeDatabaseConnection()
(根據堆棧跟蹤) - 這是一個相當短的方法,它只包含幾行代碼。
dbConnection = new MySql.Data.MySqlClient.MySqlConnection("server=myserver;
uid=myuser;
pwd=mypassword;
database=mydatabase;");
dbCommand = new MySql.Data.MySqlClient.MySqlCommand();
dbCommand.Connection = dbConnection;
試圖診斷
我添加了一個
try-catch
在代碼中initializeDatabaseConnection()
捕捉任何Exception
並調用MessageBox.Show(ex.ToString()
問題採取步驟 - 如發生之前同樣的錯誤並且它不顯示消息框。它說有一個未處理的異常,儘管在堆棧跟蹤中顯示了此方法。
我在
catch
塊中添加了一個更具體的處理程序,其中一個用於System.IO.FileLoadException
這是事件日誌條目描述的特定錯誤消息。與上面的通用異常處理程序相同的行爲發生。我發現它描述了應用程序和預期一樣,直到移動到不同的機器,建議Visual Studio遠程調試的問題上堆棧溢出的問題 - 但是我使用Visual Studio 2010 快遞根據the documentation這是不是我可以使用的功能。
關於Stack Overflow的A similar question建議,作爲第一步,檢查應用程序所針對的
.NET Framework
的版本是否高於其他PC可以處理的版本。我把它切換到3.5
,同樣的錯誤仍然發生,並且我確信另一臺PC已經運行了很多4.0
應用程序。的same question建議您檢查您在
Build Settings
建設爲平臺,以確認它設置爲x86
- 我已經這樣做了,這是。我增加了一個未處理的異常事件處理程序通過Aybe的建議這表明問題是
Could not load file or assembly, MySql.Data ... etc.
...但是我不確定爲什麼這個錯誤會發生突然,作爲構建的早期版本中發揮預期。
解決方案
- 的
MySql.Data.dll
版本所需的應用是6.8.3.0
但在一個文件夾中是6.9.3.0
- 我不知道爲什麼它需要6.8.3.0
現在的版本在客戶端PC上的應用程序文件夾中尚未更改,並且6.9.3.0
正在使用以前的版本。
我發現這要感謝下面的評論,建議我實施UnhandledExceptionEventHandler
並鏈接到文檔以瞭解如何操作。這是我以前沒有意識到的CLR的一個特點。謝謝!
如果我的問題不清楚或不恰當,我真的很感謝一些建議,以改善它,請。看到低估等等,並且不明白我的問題出了什麼問題,只要我可以告訴它它符合SO的要求,並且我儘可能地做了大量的研究。謝謝:) – Eilidh 2014-12-04 14:57:06
兩個提示:你是否嘗試捕獲未處理的異常(http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception%28v=vs.110%29.aspx)? Visual Studio社區是免費的,如果你能買得起交換機,你會得到新的功能。 – Aybe 2014-12-04 15:00:17
是的,我做到了。那麼,我有理由確定我做了 - 堆棧跟蹤顯示異常發生在'initializeDatabaseConnection()'和(如上所述)我在那裏使用了一個'try-catch',但它仍然顯示'未處理的異常'在事件日誌條目,奇怪。 – Eilidh 2014-12-04 15:02:03