2013-01-04 150 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 
     } 

这会给你为什么申请失败的信息。

相关问题