我已下载MySQL Connector/Net 6.7.4和MySQL for Visual Studio 1.0.2,然后按these instructions进行测试:
运行应用程序,我遇到了这个例外:
ConfigurationErrorsException :无法找到或加载已注册的.Net Framework数据提供程序。
然后我将MySql.Data
和MySql.Data.Entity
库版本6.7.4.0的引用添加到我的.NET 4.5项目中。现在,当我运行应用程序时,我得到了一个不同的例外:
FileLoadException :无法加载文件或程序集“MySql.Data,Version = 6.6.5.0,culture = neutral,PublicKeyToken = c5687fc88969c44d”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
请注意版本号,它不是我安装的MySQL Connector的版本。
如何让它正常工作?
答案 0 :(得分:14)
解决这个问题的诀窍是:
MySql.Data
和MySql.Data.Entity
库(对于.NET 4.5为6.7.4.0)的引用。machine.config
,编辑器以管理员身份运行,并将所有出现的6.6.5.0
版本6.7.4.0
替换为machine.config
。对于第二步,请注意有多个machine.config
个文件,每个框架版本一个(3.0,3.5,4.0)和架构(32位,64位)。另请注意,.NET 4.5的machine.config
文件位于.NET 4.0文件夹中。您可以在以下位置找到machine.config
文件:
C:\的Windows \ Microsoft.NET \框架\\配置
和
C:\的Windows \ Microsoft.NET \ Framework64 \\配置
如果app.config
文件中没有对MySQL的引用,则可能未安装MySQL for Visual Studio。要么这样做,要么将以下内容添加到项目的<system.data>
<DbProviderFactories>
<add name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
文件中:
MySQL for Visual Studio
但请注意,当您同时安装app.config
和时,请将上述代码段添加到{{1}}文件中,然后您将获得此例外:
ConfigurationErrorsException :列'InvariantName'被限制为唯一。值'MySql.Data.MySqlClient'已存在。
答案 1 :(得分:6)
我不喜欢编辑machine.config。只需将此重定向添加到web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.6.5.0" newVersion="6.7.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
答案 2 :(得分:5)
使用它应该可以阻止Virtlink提到的例外情况:
<system.data>
<DbProviderFactories>
<remove name="MySQL Data Provider" />
<add name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
特别注意<remove name="MySQL Data Provider" />
行。
答案 3 :(得分:1)
从HERE下载MYSQL 6.7.4.0。请注意,您的特定问题需要6.7.4.0而不是其他版本!
直接链接是this。
下载文件并将其添加到解决方案的参考文件夹中。
这可能会解决你的问题(它对我有用,是的,我知道这可能是一个非常恼人的问题)。
祝你好运:)答案 4 :(得分:0)
我意识到这个帖子在2013年得到了答案,但我刚刚遇到了这个问题。在我的情况下,我最近安装了Windows 10周年更新。在此之前没有问题。
根据上面的答案,事实证明我的Machine.config文件已被覆盖(我假设更新)。
对我来说,一旦我将MySql程序集信息恢复到Machine.config文件,它立即重新开始工作。
特别是“运行时”和“DbProviderFactories”部分已被擦除,必须更换。它们如下(这些将根据您使用的程序集的版本而有所不同):
运行时段:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="6.7.4.0" newVersion="6.9.9.0" /> </dependentAssembly> <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity name="MySql.Data.Entity" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="6.7.4.0" newVersion="6.9.9.0" /> </dependentAssembly> <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity name="MySql.Web" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="6.7.4.0" newVersion="6.9.9.0" /> </dependentAssembly> </assemblyBinding> </runtime>
DbProviderFactories部分
<DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories>
希望这有助于其他人遇到同样的问题。