Rider启用C#10文件范围命名空间报错 找不到配置项如何解决
问题描述
在Rider中使用C# 10文件范围命名空间语法编写代码时,命名空间声明行提示Namespace body block expected错误,复现代码:
namespace SomeProject.Interfaces; // 此处提示'Namespace body block expected'错误 public interface IInterfaceA { }
按操作指引进入Settings > Editor > Code Style > C# > Syntax Style路径查找命名空间配置项,始终找不到对应入口,无法修改命名空间声明范围规则。
当前环境信息:
JetBrains Rider 2021.2.3 Build #RD-212.5712.52, built on December 24, 2021
项目配置为C# 10语言版本、.NET Core 6.0框架。
原因
Rider 2021.2.x分支对C# 10文件范围命名空间的支持属于未完成的预览状态:
- 默认语法解析规则不识别分号结尾的文件范围命名空间格式,因此抛出需要命名空间块的错误
- 代码样式页的命名空间规则配置入口是2021.3版本才正式上线的功能,2021.2版本没有对外开放该入口
解决方案
按需三选一即可:
- 升级Rider到2021.3及以上稳定版(优先推荐)
升级后重启IDE,再进入Settings > Editor > Code Style > C# > Syntax Style页面,就能找到Namespaces分类下的文件范围命名空间开关,设置后语法报错自动消失,代码自动生成、代码清理、重构等功能也会完整适配该语法规则。 - 2021.2.3版本手动开启预览支持
- 双击Shift打开全局搜索,输入
Registry进入IDE内置注册表页 - 搜索
csharp.support.file.scoped.namespaces配置项,勾选启用 - 重启Rider即可消除语法报错
注意:这个方法只能解决语法标红的问题,2021.2版本没做完这个特性的适配,新建类、自动生成代码的时候还是会输出传统块级命名空间,功能有残缺,长期用还是建议升级。
- 双击Shift打开全局搜索,输入
- 用.editorconfig文件配置规则(全版本通用)
在解决方案根目录新建或编辑.editorconfig文件,加入以下配置即可全局指定命名空间规则:
保存配置后Rider会自动识别规则,不需要重启IDE,后续代码检查、生成都会遵循文件范围命名空间的要求。[*.cs] csharp_style_namespace_declarations = file_scoped:warning
内容的提问来源于stack exchange,提问作者Kavo
相关产品推荐
相关产品推荐

