我的应用程序在我的系统上运行完美(在IDE中,并且已安装),但在任何其他系统上安装时都会完全失败。
我移动了源代码的删节版本,看看我是否能弄清楚问题是什么,以及我的无限愤怒,我发现当程序试图引用另一个库中包含的类时发生错误利用了MySQL.Data.DLL文件...
[插入无尽的诅咒,发誓,以及其他R级语言]。
为什么呢?为什么? 为什么?! 为什么?!?! 严重 - 地狱是什么?!
答案 0 :(得分:2)
当您在应用程序中使用MySql并在客户端计算机上安装时,它将在客户端计算机中搜索MySql.Data.dll
并转到路径
C:\Program Files (x86)\MySQL\MySQL Connector Net X.X.X\Assemblies\
(假设您已在C盘中安装了MySql连接器)
浏览Assemblies
文件夹,您会看到此MySql.Data.dll
检查此文件的版本并同样检查您的MySql.Data.dll
它们必须是相同的。
普通外行用户不会安装MySQL连接器。当这个程序发布用于一般发行和John Q时,我该怎么做。用户无法运行它,因为他们没有安装这个模糊的东西?
您的应用程序必须打包它的所有必备条件,因此在客户端安装它时,还应该使用您的软件安装必备软件。
假设我使用MySql connector 6.9.6.0
开发了一个应用程序。
做以下事情
在App.Config文件中指定MySql Connector
版本。
<system.data>
<DbProviderFactories>
<clear/>
<remove invariant="MySql.Data.MySqlClient"/>
<add name="MySql.Data.MySqlClient" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,Version=6.9.6.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data>
现在,客户端计算机将专门在app.config
中搜索上述版本。
顺便说一下这两点是可选的, 如果你不做这些,那么你必须像现在一样照顾好每一件事。