我有一个应用程序可以在我的系统上完美运行(在 IDE 中和已安装),但在安装在任何其他系统上时完全失败。
我将源代码的删节版本移过来,看看是否能找出问题所在,令我无限愤怒的是,我发现当程序试图引用另一个库中包含的类时发生错误,该类使用MySQL.Data.DLL 文件...
[在这里插入无尽的诅咒、发誓和其他 R 级语言]。
为什么?为什么?为什么?! 为什么?!?! 认真的 - 什么鬼?!
我有一个应用程序可以在我的系统上完美运行(在 IDE 中和已安装),但在安装在任何其他系统上时完全失败。
我将源代码的删节版本移过来,看看是否能找出问题所在,令我无限愤怒的是,我发现当程序试图引用另一个库中包含的类时发生错误,该类使用MySQL.Data.DLL 文件...
[在这里插入无尽的诅咒、发誓和其他 R 级语言]。
为什么?为什么?为什么?! 为什么?!?! 认真的 - 什么鬼?!
当您在应用程序中使用 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
.
做以下事情
MySql Connector
在 App.Config 文件中指定版本。
<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
.
顺便说一句,这两点是可选的,如果你不这样做,那么你必须照顾好每一件事,就像你现在所做的那样。