当我使用 System.Data.SqlClient 版本 4.4.3 时,无法加载文件或程序集 System.Data.SqlClient,版本=4.2.0.2

Could not load file or assembly System.Data.SqlClient, Version=4.2.0.2 when I use System.Data.SqlClient Version 4.4.3

我在 ASP.NET Core 2.0 项目中对所有 .NET Standard 2.0 class 库使用 System.Data.SqlClient 版本 4.4.3。为什么我得到

Could not load file or assembly 'System.Data.SqlClient, Version=4.2.0.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

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

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

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

当某些依赖程序集使用同一库的旧版本时会发生这种情况。 要解决这个问题,您可以使用 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>  

降级为

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

一切都恢复正常了!今天浪费了 4 个小时!!!

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

使用 FTP 连接到 Azure 网站,导航到站点 -> wwwroot 文件夹。在这里,我有一个名为 "refs" 的文件夹和另一个名为 "runtimes" 的文件夹。我删除了这两个文件夹(进行本地备份后),re-published 我的应用程序运行正常!

不确定它为什么有效,但我认为这可能有用,因为有人偶然发现了类似的问题。

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

不知道我遇到的是不是这种情况。 我通过 nuGet 添加了 System.Data.SqlClient,它工作正常。

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

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

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