Xamarin.iOS遇CS8370错误:如何强制编译器使用C#8.0语言版本?
解决Xamarin iOS项目中C# 8.0范围运算符无法使用的问题
问题重现
使用Visual Studio Community 2019(16.11.5版本,基于.NET Framework 4.8.04084)开发Xamarin iOS项目时,编写范围运算符[startIndex..endIndex]触发错误CS8370:Feature 'range operator' is not available in C# 7.3. Please use language version 8.0 or greater。即便修改项目文件<LangVersion>为8.0、调整目标框架、安装.NET Core 3.1运行时,通过#error version查看语言版本仍为7.3。
解决步骤
1. 强制项目文件全局设置C# 8.0语言版本
- 右键iOS项目 → 选择卸载项目
- 右键卸载后的项目 → 选择编辑 [项目名].csproj
- 在项目文件的根
<PropertyGroup>节点中添加或修改配置,确保覆盖所有配置和平台:<PropertyGroup> <!-- 强制设置C#语言版本为8.0 --> <LangVersion>8.0</LangVersion> </PropertyGroup> - 检查是否存在条件性的
<LangVersion>设置(比如针对Debug/Release或不同平台的配置),若有则统一修改为8.0,避免被覆盖。
2. 确认Xamarin iOS项目的目标框架版本
Xamarin iOS对C# 8.0的支持依赖目标iOS版本,需确保:
- 右键iOS项目 → 选择属性
- 切换到应用程序选项卡
- 在目标框架下拉菜单中选择iOS 13.0或更高版本(VS2019 16.11默认支持的最新iOS版本即可)
3. 清理并重建解决方案
- 点击顶部菜单生成 → 清理解决方案
- 手动删除项目目录下的
bin和obj文件夹(清除缓存残留) - 点击顶部菜单生成 → 重建解决方案
4. 检查Visual Studio全局语言版本设置
- 点击顶部菜单工具 → 选项
- 展开项目和解决方案 → .NET Core → 选择高级
- 在C#语言版本下拉菜单中选择8.0或最新,点击确定
5. 验证结果
完成上述操作后,再次通过#error version指令验证语言版本,正常情况下会显示C# 8.0。
内容的提问来源于stack exchange,提问作者Oleksandr Ragoza
相关产品推荐
相关产品推荐

