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

.NET Core类库在Xamarin Forms PCL中出现程序集版本冲突报错求助

解决Xamarin Forms PCL中使用System.Data.SqlClient 4.4.3的版本冲突问题

先把你遇到的错误贴出来,方便大家定位:

Severity Code Description Project File Line Suppression State
Error CS1705 Assembly 'xxx' with identity 'xxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

这个问题本质是PCL项目的目标框架和System.Data.SqlClient 4.4.3的依赖版本不兼容:.NET Core类库能很好适配这个包的依赖,但旧的PCL(可移植类库)对System.Runtime的版本要求更低,而4.4.3版本的SqlClient依赖的是更高版本的System.Runtime(4.2.0.0),导致引用冲突。

给你几个可行的解决思路:

1. 最推荐:把PCL换成.NET Standard类库

Xamarin官方早就不主推PCL了,.NET Standard是现在跨平台类库的标准,和.NET Core类库的依赖体系完全兼容,能从根源上避免这类版本冲突问题。操作步骤很简单:

  • 新建一个.NET Standard类库(选2.0及以上版本,和你的.NET Core类库匹配)
  • 把原来PCL里的代码迁移过去
  • 引用你的ADO.NET类库,这样依赖版本就能自动对齐了

2. 保留PCL的情况下修复版本冲突

如果你暂时不想换项目类型,可以试试这两个办法:

方法A:添加绑定重定向

在PCL项目的.csproj文件里手动添加版本绑定重定向,强制让项目使用更高版本的System.Runtime:

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

然后重新编译项目,看看冲突是否解决。

方法B:降级System.Data.SqlClient版本

4.4.x版本的System.Data.SqlClient对.NET Standard的依赖提升了,对PCL的支持不太友好。你可以尝试降级到4.3.0版本,这个版本对PCL的兼容性更好,能避免System.Runtime的版本冲突。直接在NuGet包管理器里卸载4.4.3,安装4.3.0即可。

3. 替换为更适配Xamarin的SqlClient版本

微软已经把System.Data.SqlClient的后续维护转到了Microsoft.Data.SqlClient,这个包对Xamarin的支持更完善,你可以尝试把类库中的System.Data.SqlClient替换成Microsoft.Data.SqlClient,选择一个兼容PCL或者.NET Standard的版本,这样也能解决这类依赖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:47:07