You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 2.0项目发布Azure报System.Data.SqlClient版本不匹配错误

解决ASP.NET Core 2.0发布Azure时System.Data.SqlClient版本不匹配问题

这个问题我之前帮几个开发者解决过,本质是依赖版本冲突+Azure部署时的文件残留/配置问题导致的——本地正常是因为开发环境的绑定重定向和缓存机制帮你处理了,但Azure环境需要更明确的配置。下面是几个一步步的解决方案,按顺序试应该能搞定:

1. 手动添加绑定重定向,强制指定版本

在你的ASP.NET Core主项目的web.config文件里,找到<runtime>节点(如果没有就新建),添加针对System.Data.SqlClient的绑定重定向,强制所有请求都指向4.4.3版本:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Data.SqlClient" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.4.3.0" newVersion="4.4.3.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

如果是.NET Standard类库,确保它们的app.config里也有同样的配置,或者在主项目的.csproj里添加:

<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

这会自动生成正确的绑定重定向配置。

2. 确保所有项目都直接引用System.Data.SqlClient 4.4.3

很多时候问题出在传递依赖:某个第三方包可能间接引用了旧版本的System.Data.SqlClient,导致发布时旧版本DLL被打包进去。你需要给每个.NET Standard 2.0类库和主项目都手动安装4.4.3版本的NuGet包,而不是依赖其他包的间接引用。

在每个项目的.csproj里添加明确的引用:

<PackageReference Include="System.Data.SqlClient" Version="4.4.3" />

或者在NuGet包管理器里,找到System.Data.SqlClient,选择版本4.4.3并安装到所有相关项目。

3. 清理Azure App Service的旧部署文件

有时候发布操作不会完全覆盖旧文件,导致旧版本的System.Data.SqlClient.dll残留在Azure服务器上,和新版本冲突。你可以:

  • 在Visual Studio的发布配置里,勾选删除目标中未存在的文件(在“文件发布选项”里),然后重新发布;
  • 或者直接登录Azure门户,进入你的App Service,打开高级工具>Kudu,进入site/wwwroot目录,找到System.Data.SqlClient.dll和System.Data.SqlClient.xml文件,手动删除后再重新发布。

4. 验证Azure的.NET Core运行时版本

确保Azure App Service上的.NET Core运行时版本和你本地开发环境一致。进入Azure门户的App Service>配置>常规设置,查看“.NET Core版本”,选择和你本地匹配的ASP.NET Core 2.0版本(比如2.0.9)。

5. 用全局配置统一强制版本

如果项目较多,可以在解决方案根目录新建一个Directory.Build.props文件,添加全局版本控制,强制所有项目使用指定版本的System.Data.SqlClient:

<Project>
  <ItemGroup>
    <PackageReference Update="System.Data.SqlClient" Version="4.4.3" />
  </ItemGroup>
</Project>

这个文件会被所有项目自动识别,确保整个解决方案的依赖版本统一。

这些步骤应该能解决版本不匹配的问题,核心思路就是明确指定版本+清理旧文件+强制绑定重定向,避免Azure环境加载到错误的DLL版本。

内容的提问来源于stack exchange,提问作者AlexB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:34:32