无法加载文件或程序集’MySql.Data,Version = 6.2.2.0

我正在使用c#和基于MySQL的数据库进行桌面应用程序。 当我在我的机器上安装它的安装程序时它工作正常,但是当我在其他机器上安装它时,在尝试访问数据库时会给出以下exception。 我正在使用MySQL.Data.dll与MySQL通信。

无法加载文件或程序集“MySql.Data,Version = 6.2.2.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d”或其依赖项之一。 该系统找不到指定的文件。

MySql.Data.dll文件存在于Program文件夹的Project文件夹中

实际上,当我从程序文件中的文件夹运行它时,它运行正常,没有错误,但当我尝试从开始菜单中的快捷方式运行它时,它给出了该错误。

  1. “开始”菜单中的快捷方式是否正确设置了工作目录? (我怀疑这是最可能的答案)

  2. 是否在GAC(全局程序集缓存)中安装了不同/不正确的MySql.Data.dll版本? 我之前看过这个给出类似的错误消息。

这听起来我迟到了2年回答这篇文章,但它可能对那些仍然面临这个问题的人有所帮助,所以这是我在2012年4月1日美国东部时间下午5点的调查结果:

我的一个Web应用程序遇到了同样的问题。 当我这样做时,我发现上述问题出现了:

  • MySql.Data.dll复制并粘贴到文件夹中的某个位置。
  • 您有GAC中任何版本的MySql.Data.dll的副本

尽管应用程序在您的开发计算机上工作正常,因为它可以看到文件但是当您在其他计算机上部署它时实际上会带来运行时错误。

在我的情况下,VS2008始终指出我与你提到的相同的错误。 然后我这样做了:

  • 删除了dll的本地副本引用
  • 引用了GAC中的DLL
  • 并通过右键单击 – >属性将DLL的属性“Copy Local”设置为“True”。

编辑:

有人问“GAC在哪里?”:
http://msdn.microsoft.com/en-us/library/yf1d93sz(v=vs.110).aspx

MySQL.data.dll是否与.exe文件存在于同一目录中?

如果是这样,MySQL.data.dll具有.exe文件正在寻找的正确版本/公钥?

当这件事发生在我身上时,通常是两件事中的一件:

确保在出现错误的计算机上存在MySql.Data。 (令人难以置信的是文件遗失的频率:-))

如果MySql.Data是混合模式(本机和托管代码)32位DLL。 并且您的可执行文件指定“任何CPU”。 在具有64位.NET的64位计算机上,这将失败,并显示错误消息。 解决方案是将“x86”指定为可执行文件的目标。

汤米的理由非常有效:

与我的开发机器上实际安装的版本相比,我的项目引用了较旧版本的MySql.Data.dll。 这将导致相同的错误。

检查.config文件:

并且当您要向其添加新引用时,将该verisonNr与文件的versionNr进行比较。

解:

1)从配置文件中删除该行并重新添加引用

2)或卸载MySql .net连接器并安装项目引用的版本。

确保放在Project的文件夹中的MySql.Data DLL是正确的版本(在本例中为6.2.2.0)。

我也有这个问题,对我来说,它是在项目设置中重新创建连接字符串。 它们配置为以前版本的MySQL连接器。