无法加载文件或程序集“MySql.Data.EntityFramework,版本=8.0.19.0 或其依赖项之一

Could not load file or assembly 'MySql.Data.EntityFramework, Version=8.0.19.0 or one of its dependencies

我刚刚安装了最新版本的 MySQL.Data.EntityFramework Version 8.0.19

我第一次 运行 代码时出现以下错误:

The latest nuget package (MySql.Data 8.0.19) contains an unsigned version of Ubiety.Dns.Core.dll. This results in an exception while loading.

根据:this bug report, I need to install: Ubiety.Dns.Core/ 包...所以我安装了这个包。现在我收到以下异常:

Could not load file or assembly 'MySql.Data.EntityFramework, Version=8.0.19.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies.


作为解决方法,我尝试安装以前的版本,MySQL.Data.EntityFramework Version 8.0.18,但我找不到任何以前的版本:MySql.Data.EntityFramework Nuget

有人知道以前的版本是否被删除了吗?

检查您的 Web.Config 是否有此行。

     <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.19.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

并且还添加了提供商:

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.19.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">

更新:

MySQL.Data 8.0.19 依赖于 Ubiety.Dns.Core,它不会自动安装。安装MySQL.Data 8.0.19

后需要单独安装Ubiety.Dns.Core

另请注意,Oracle 已删除所有先前版本的 MySQL.Data 8.0.19see here so if you upgrade to 8.0.19 you cannot go back to 8.0.18... I believe the reason for removing all the previous versions is that they had a 以及已在 8.0.19 中修复的多主机连接字符串。


原回答:

就我而言,出现错误的原因是我忘记将解决方案中的所有项目升级到 MySQL.Data 8.0.19,其中一些项目仍在 8.0.18

哇,令人惊讶的是,我遇到了完全相同的问题。我做了什么来解决:

  • 将所有项目更新到 mysql 提供商的 8.0.19。
  • 将数据库提供程序标签重新添加到我的 web.config。我不小心删除了它。那是我的错。
  • 最后,我安装了Ubiety.Dns.Core。

所有这些都解决了我的问题。

目前我一直在使用 8.0.18,直到发布修复程序,因为在我的项目中安装 Ubiety.Dns.Core 会导致我的源代码出现数千条警告。

Install-Package MySql.Data -version 8.0.18

对于那些不希望 Ubiety.Dns.Core 由于某种原因出现的数千条冗余警告的人 -- 安装早期版本对我来说效果很好:

Install-Package Ubiety.Dns.Core -Version 2.4.1

对我来说,删除以下部分代码是解决方法

    <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=8.0.19.0, Culture=neutral, PublicKeyToken=xxxx" />
        </DbProviderFactories>
    </system.data>