我正在使用c#和基于MySQL的数据库进行桌面应用程序。当我在我的机器上安装它的安装程序时,它工作正常,但是当我在其他机器上安装它时,在尝试访问数据库时会给出以下异常。我正在使用MySQL.Data.dll
与MySQL进行通信。
无法加载文件或程序集“MySql.Data,Version = 6.2.2.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d”或其依赖项之一。系统找不到指定的文件。
和MySql.Data.dll
文件位于程序文件文件夹
实际上,当我从程序文件中的文件夹运行它时它运行正常,没有错误但是当我尝试从“开始”菜单中的快捷方式运行它时,它会给出错误。
答案 0 :(得分:20)
听起来我已经迟到了2年回答这篇文章,但对于那些仍然面临这个问题的人来说可能会有所帮助,所以这是我在2012年4月1日美国东部时间下午5点的调查结果:
我的一个网络应用程序遇到了同样的问题。我发现当你这样做时会出现上述问题:
MySql.Data.dll
粘贴到某个文件夹中。MySql.Data.dll
的任何版本的副本尽管应用程序在您的开发计算机上工作正常,因为它可以看到文件但是当您在其他计算机上部署它时实际上会带来运行时错误。
在我的情况下,VS2008始终指出我所提到的相同错误。然后我做了这个:
有人问“GAC在哪里?”:
http://msdn.microsoft.com/en-us/library/yf1d93sz(v=vs.110).aspx
答案 1 :(得分:9)
“开始”菜单中的快捷方式是否正确设置了工作目录? (我怀疑这是最可能的答案)
GAC(全局程序集缓存)中是否安装了不同/不正确的MySql.Data.dll版本?我之前看到过此类错误消息。
答案 2 :(得分:3)
MySQL.data.dll是否与.exe文件存在于同一目录中?
如果是这样,那么MySQL.data.dll是否有.exe文件正在寻找的正确版本/公钥?
答案 3 :(得分:2)
当这件事发生在我身上时,通常是两件事中的一件:
确保在出现错误的计算机上存在MySql.Data。 (令人难以置信的是文件遗失的频率:-))
如果MySql.Data是混合模式(本机和托管代码)32位DLL。并且您的可执行文件指定“任何CPU”。在具有64位.NET的64位计算机上,这将失败,并显示错误消息。解决方案是将“x86”指定为可执行文件的目标。
答案 4 :(得分:1)
汤米的理由非常有效:
我的项目引用了MySql.Data.dll的旧版本,而不是我的开发机器上实际安装的版本。这将导致相同的错误。
检查.config文件:
将verisonNr与文件的versionNr进行比较,然后添加新的引用。
解决方案:
1)从配置文件中删除该行并重新添加引用
2)或卸载MySql .net连接器并安装项目引用的版本。
答案 5 :(得分:1)
我也有这个问题,对我来说,它是在项目设置中重新创建连接字符串。它们配置为以前版本的MySQL连接器。
答案 6 :(得分:1)
我在 Web 应用程序 (C#) 中遇到了同样的问题。
我设法通过更改 web.config
文件解决了它,它引用了 6.2.2.0 版,而我的 dll 是 8.0.25.0 版。
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,
Version=8.0.25.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
答案 7 :(得分:0)
确保放在Project的文件夹中的MySql.Data DLL是正确的版本(在本例中为6.2.2.0)。