2013-01-04 201 views
0

我已經構建了一個簡單的WPF應用程序來獲得一些經驗。 它只是在用戶點擊按鈕時從數據庫獲取信息。
該應用程序在我的電腦中正常工作(使用發佈選項),但是當我嘗試在我的筆記本電腦和朋友的個人電腦上運行應用程序時,應用程序崩潰的速度與按下按鈕時一樣快。
我99%確定它與我用來聯繫數據庫的實體框架有關(所有在按鈕單擊時觸發的函數都是聯繫並從數據庫中檢索信息)。WPF應用程序無法在其他計算機上工作

在google中查找答案後,我發現它可能與PC中的.net安裝或項目引用有關。

但是,.net FW版本與我的電腦和我的筆記本電腦相同,並且引用都標記爲複製本地(僅用於測試!)。

還有什麼可能導致這樣的問題?我真的不知道了......

UPDATE

使用異常,我發現我的錯誤是:
The specified store provider cannot be found in the configuration, or is not valid.

我也通過谷歌搜索更深層次的解決了這個問題。
解決方案可以在下面找到...

快樂編碼!

+1

只要捕捉異常並將其記錄到文件中,您就可以獲得堆棧跟蹤。 – ken2k

回答

1

我終於解決了!

這是怎麼做的:
1)確保你的項目有一個對MySql.Data.dll,MySql.Web.dll,MySql.Data.Entity.dll和System.Data.Entity.dll的引用。 。

2)將以上所有設置爲Copy-Local。

3)下列行添加到您的App.config文件:

<system.data> 
    <DbProviderFactories> 
    <clear /> 
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" 
    description=".Net Framework Data Provider for MySQL" 
    type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
    Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
</system.data> 

4)點擊MySQL.Data參考,並檢查它的版本。可以在選擇它之後在解決方案資源管理器下的「屬性」窗口中找到它。

5)將Version=6.4.4.0部件更改爲MySql.Data.dll的版本。 Mine是6.5.4.0這是最新版本,但舊版本應該可以正常工作。

此外,我要感謝Ralf de Kleine和其他所有回答提出/建議異常代碼的人。
當他們非常方便時,我不想考慮使用異常是愚蠢的!

2

它所做的是從數據庫中獲取信息,當用戶點擊一個按鈕 。

在您的應用程序中,您正在通過實體框架訪問數據庫。我只能猜測你與數據庫的連接失敗,因爲你的應用程序崩潰了。確保你的應用程序有適當的數據庫。

它也是一個好主意,以記錄您的例外,以便您可以查看應用程序崩潰時的詳細信息。

+0

但是,當我嘗試運行它時,它會起作用...此外,數據庫是遠程mysql數據庫,所以從另一臺計算機連接到它應該沒有問題。 – Asaf

+1

@xTCx,實現一些異常處理和日誌記錄在你的應用程序中,沒有它,我不認爲這很容易知道發生了什麼問題。 (如果框架也一樣)。 – Habib

2

嘗試使用周圍代碼中的按鈕事件處理函數裏面,就像一個try catch塊:

 try 
     { 
      //here your database logic 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
      //todo do something usefull 
     } 

這會給你爲什麼申請失敗的信息。

相關問題