【问题标题】:Could not load file or assembly System.Data.SqlClient, Version=4.2.0.2 when I use System.Data.SqlClient Version 4.4.3当我使用 System.Data.SqlClient 版本 4.4.3 时,无法加载文件或程序集 System.Data.SqlClient,版本 = 4.2.0.2
【发布时间】:2018-03-22 21:59:47
【问题描述】:

我将 System.Data.SqlClient 版本 4.4.3 用于我的 ASP.NET Core 2.0 项目中的所有 .NET Standard 2.0 类库。为什么我会得到

无法加载文件或程序集“System.Data.SqlClient,版本=4.2.0.2,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

项目何时使用 VSTS 发布到 Azure 应用服务?当然,它在我的机器上也能完美运行!

这一切昨天都奏效了。但是今天我决定将软件包更新为:

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.3" />

【问题讨论】:

  • 这发生在我身上一次,我的参考文献中仍然有对以前版本的旧参考。您可能必须手动删除它
  • 我刚查过 - 我没有这样的参考资料。
  • 我在使用 2.0.6 时遇到了很多问题。所以我已经停止使用它了。
  • 我只是做了同样的事情 - 降级到 2.0.5。让我们看看...

标签: c# azure-devops azure-web-app-service asp.net-core-2.0 .net-standard-2.0


【解决方案1】:

不知道这是否与我遇到的情况相同。 我通过 nuGet 添加了 System.Data.SqlClient,它运行良好。

【讨论】:

  • 这也对我有用......我在解决方案的一个项目中拥有它,但在另一个项目中没有。没有对不同版本 System.Data 的“引用”
  • 我的项目是 core 2.2,默认引用(不通过 nuget 添加)指向 .net 4.7。
  • 我的项目一开始是一个正常工作的 Core 2.2 项目,在将项目升级到 Core 3.1 后发生 System.Data.SqlClient 的“找不到文件”问题。 System.Data.SqlClient 以前没有安装,但是在安装它之后(在我的例子中是 v4.8.1),问题就消失了。我猜这只是 Core 3.1 的另一个重大变化!
  • 根据@RodneyEllis,我必须将我的nuget System.Data.SqlClient 的引用也添加到我的网站项目中,然后它才起作用
【解决方案2】:

降级为

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />

一切都恢复正常了!今天迷路了4小时!!!

【讨论】:

  • 我认为这可行。我相当肯定我在某个地方读到了 2.0.6 的一些严重错误。
【解决方案3】:

我遇到了同样的问题,带有消息的 SerializationException:

Unable to find assembly 'Microsoft.Data.SqlClient,  
March 3rd 2020 16:36:46Error
Version=1.0.19269.1, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5'

但是 dll 一切正常,问题是由无效的连接字符串引起的, 我花了将近几个小时才弄清楚发生了什么!

【讨论】:

    【解决方案4】:

    当某些依赖程序集使用同一库的旧版本时会发生这种情况。 为了解决这个问题,你可以使用assembly redirecting,强制旧库使用更新版本。

    把它放在你的 app.config 或 web.config 中(如果是 asp.net)

    <dependentAssembly>  
        <assemblyIdentity name="System.Data.SqlClient"  publicKeyToken="b03f5f7f11d50a3a"  culture="neutral" />  
        <bindingRedirect oldVersion="4.2.0.2" newVersion="4.4.3.0" />  
    </dependentAssembly>  
    

    【讨论】:

    • 这是 ASP.NET Core 2.0!
    • @alvipeo 你也可以在 asp.net core 中创建 app.config,它会获取程序集重定向规则
    【解决方案5】:

    我今天遇到了类似的问题,我更新了一些包,包括 All 元包到 2.0.6。然后我的应用程序将无法引用上面的错误。经过大量调查后,我做了以下事情,现在似乎可以正常工作了。

    使用 FTP 连接到 Azure 网站,导航到该站点 -> wwwroot 文件夹。在这里,我有一个名为“refs”的文件夹和另一个名为“runtimes”的文件夹。我删除了这两个文件夹(在进行本地备份后),重新发布了我的应用程序并且它工作了!

    不知道为什么它会起作用,但我认为这可能很有用,因为有人偶然发现了类似的问题。

    【讨论】:

    • 删除 wwwroot 文件夹的内容对我有用。谢谢。
    【解决方案6】:

    对我来说,解决方案是删除 System.Data.SqlClient 包并重新安装。升级包是不够的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 2020-05-09
      • 2018-10-04
      相关资源
      最近更新 更多