升级Xamarin.Forms至.NET Standard 2.0时iOS编译报错求助
解决Xamarin.iOS引用.NET Standard 2.0类库的编译错误
这个错误我之前帮同事排查过,核心原因很明确:你的Xamarin.iOS项目目标框架版本太低,旧版本的Xamarin.iOS(比如提示的Version 1.0)不支持引用.NET Standard 2.0类库。结合你说的Android端正常,说明.NET Standard类库本身配置没问题,问题出在iOS项目的目标框架设置上,给你几个具体的解决步骤:
1. 更新Xamarin.iOS项目的目标框架版本
- 右键你的Xamarin.iOS项目,选择「属性」;
- 在弹出的属性窗口里切换到「应用程序」选项卡;
- 找到「目标框架」下拉框,选择Xamarin.iOS 10.0及以上版本(.NET Standard 2.0对Xamarin平台的最低要求是iOS 10.0、Android 7.0);
- 注意:如果下拉框里没有高版本选项,先打开Visual Studio的「工具」->「选项」->「Xamarin」->「iOS设置」,检查是否有可用的Xamarin.iOS更新,先把Xamarin组件更到兼容.NET Standard 2.0的版本(Visual Studio 2017社区版需要确保更新到最新的15.9.x及以上版本,才能支持更高版本的Xamarin.iOS)。
2. 手动检查iOS项目的.csproj配置
有时候属性窗口的修改可能没同步到项目文件里,建议直接打开iOS项目的.csproj文件,确认目标框架配置正确:
- 找到
<PropertyGroup>节点下的<TargetFramework>项,确保它是类似Xamarin.iOS13.0(或更高)的格式,而不是错误的xamarin.ios Version 1.0; - 正确的配置示例:
<PropertyGroup> <TargetFramework>Xamarin.iOS13.0</TargetFramework> <MinimumOSVersion>10.0</MinimumOSVersion> <!-- 其他项目配置 --> </PropertyGroup>
3. 彻底清理缓存并重新生成
虽然你已经清理了obj和bin文件夹,但建议再做一次彻底清理:
- 右键解决方案,选择「清理解决方案」;
- 关闭Visual Studio,删除解决方案根目录下的
.vs隐藏文件夹(这个文件夹里存着VS的缓存文件,有时候会导致奇怪的编译问题); - 重新打开Visual Studio,右键解决方案选择「重新生成解决方案」。
4. 验证NuGet包的兼容性
确保你的Xamarin.Forms和其他相关NuGet包版本是支持.NET Standard 2.0的:
- Xamarin.Forms 3.0及以上版本完全支持.NET Standard 2.0,如果你已经用了最新版,这一步没问题;
- 检查iOS项目和.NET Standard类库中的NuGet包版本是否一致,避免出现版本冲突导致的隐性错误。
内容的提问来源于stack exchange,提问作者Hunt
相关产品推荐
相关产品推荐

