如何修改Xamarin.Forms项目的.NET Framework目标框架以解决NuGet问题
解决Xamarin.Forms项目目标框架修改+NuGet问题的实操方案
我之前维护老Xamarin项目时也碰到过几乎一模一样的问题,核心就是旧版工具链不匹配导致的连锁反应,下面是我亲测有效的最简流程:
第一步:先理顺NuGet工具链(不用硬升3.0)
强行升级NuGet 3.0反而容易踩坑,不如先做这些兼容调整:
- 打开解决方案,右键点击解决方案 → 选择管理解决方案的NuGet程序包
- 切换到「设置」标签页,清理失效的第三方包源,只保留官方的
nuget.org - 进入「NuGet包管理器设置」→「常规」,勾选允许格式为PackageReference的包(老项目如果用
packages.config,后续可以考虑迁移,但先解决眼前问题) - 关闭VS,找到项目根目录下的
.nuget文件夹,删掉里面的缓存文件后重新打开VS
第二步:绕开提示,手动修改目标框架
如果在项目属性里改目标框架弹错误,试试直接编辑项目文件:
- 右键你的Xamarin.Forms项目(包括iOS/Android/UWP等平台项目)→ 选择卸载项目
- 右键卸载后的项目 → 选择编辑.csproj(iOS项目是
.iOS.csproj) - 在文件里找到类似这样的节点,把版本改成你需要的(注意要和VS支持的版本匹配,比如选
v4.8):<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> - 保存文件,右键项目 → 重新加载项目,再去项目属性里确认,这时候不会再弹NuGet升级提示了
第三步:修复NuGet包安装问题
改完目标框架后,重新梳理NuGet包:
- 右键解决方案 → 还原NuGet包
- 如果还是报错,右键项目 → 管理NuGet程序包,先卸载有问题的包,再重新安装和你的Xamarin.Forms版本兼容的包(比如Xamarin.Forms 4.x对应.NET Framework 4.7.2及以上)
- 另外,在VS的「工具」→「扩展和更新」里,把NuGet包管理器更新到当前VS支持的最高版本就行,不用硬追3.0
额外小贴士
- 如果用的是VS2019及以上,右键项目 → 迁移到PackageReference,能减少很多
packages.config带来的NuGet兼容问题 - 尽量保持所有项目(共享项目+平台项目)的目标框架版本一致,跨平台NuGet包的兼容性会好很多
内容的提问来源于stack exchange,提问作者NicoRiff
相关产品推荐
相关产品推荐

