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

时间:2018-03-22 21:59:48

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

我将System.Data.SqlClient V4.4.3用于ASP.NET Core 2.0项目中的所有.NET Standard 2.0类库。我为什么要

  
    

无法加载文件或程序集'System.Data.SqlClient,Version = 4.2.0.2,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

  

将项目与VSTS一起发布到Azure App Service时?当然,它完全适用于我的机器!

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

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

6 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:3)

降级为

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

一切都恢复正常!今天失去了4个小时!!!

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

将此文件放在app.config或asp.net

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

答案 4 :(得分:0)

今天我遇到了类似的问题,我更新了包括All meta-package到2.0.6在内的一些软件包。我的应用程序然后不会引用上面的错误。经过大量调查后,我做了以下工作,现在看起来似乎有效了。

使用FTP连接到Azure网站,导航到网站 - &gt; wwwroot文件夹。在这里,我有一个名为&#34; refs&#34;的文件夹。另一个名为&#34;运行时&#34;。我删除了这两个文件夹(在进行本地备份后),重新发布了我的应用程序,它运行良好!

不确定为什么会有效,但我认为这可能是有用的,因为有人在遇到类似问题时遇到了这个问题。

答案 5 :(得分:0)

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