已安装的应用程序无法加载 MySQL.Data.DLL?

Installed Application Fails To Load MySQL.Data.DLL?

我有一个应用程序可以在我的系统上完美运行(在 IDE 和已安装的系统中),但在安装到任何其他系统时完全失败。

我把源代码的删节版移过来,看看能不能找出问题所在,令我无限愤怒的是,我发现程序试图引用 class 包含在另一个使用 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 它们必须相同。

The average layman user won't have the MySQL connector installed. What am I supposed to do when this program is released for general circulation and John Q. User can't run it because they don't have this obscure... thing installed?

您的应用程序必须 打包 它的所有必要条件,因此当客户端安装它时,必要条件也应该与您的软件一起安装。 假设我用 MySql connector 6.9.6.0.

开发了一个应用程序

做以下事情

  1. 打包 MySql 连接器与您的软件构建
  2. 在 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中提到的版本。

顺便说一句,这两点是可选的, 如果你不做这些,那么你必须像现在一样照顾好每一件事。