VS Code中如何自动生成含解决方案名的命名空间?
解决VS Code中C#文件自动生成命名空间的问题
我之前也碰到过这个情况——只设置<RootNamespace>确实不会影响VS Code创建新文件时的命名空间生成逻辑,因为这俩是由不同模块负责的:<RootNamespace>是给.NET编译器用的,控制程序集的默认命名空间;而VS Code里的命名空间自动填充,是由OmniSharp扩展(就是给C#提供智能提示的核心工具)控制的。下面给你几个靠谱的解决办法:
方法一:直接配置OmniSharp的命名空间前缀
这是最直接的方式:
- 打开VS Code设置面板:按
Ctrl+,(Windows/Linux)或者Cmd+,(Mac) - 在搜索框输入
omnisharp namespace prefix,找到Omnisharp: Namespace Prefix选项 - 把它的值设置成你的解决方案名称,比如你的解决方案叫
MyAwesomeSolution,就填MyAwesomeSolution - 重启OmniSharp生效:按
Ctrl+Shift+P打开命令面板,输入OmniSharp: Restart OmniSharp并执行
之后你再在项目的任意文件夹下创建C#文件,生成的命名空间就会是MyAwesomeSolution.folder_name的格式了。
方法二:用.editorconfig统一配置命名空间规则
如果你的团队有统一代码规范,或者想让命名空间规则更持久(不会因为VS Code设置重置而丢失),可以用.editorconfig文件配置:
- 在解决方案根目录创建一个
.editorconfig文件 - 加入以下配置(把
MyAwesomeSolution替换成你的解决方案名称):
# 强制命名空间以解决方案名称为前缀 dotnet_naming_rule.namespaces_require_solution_prefix.severity = warning dotnet_naming_rule.namespaces_require_solution_prefix.symbols = all_namespaces dotnet_naming_rule.namespaces_require_solution_prefix.style = solution_prefixed_namespace dotnet_naming_symbols.all_namespaces.applicable_kinds = namespace dotnet_naming_symbols.all_namespaces.applicable_accessibilities = * dotnet_naming_style.solution_prefixed_namespace.required_prefix = MyAwesomeSolution. dotnet_naming_style.solution_prefixed_namespace.capitalization = pascal_case
- 保存文件后,OmniSharp会自动读取配置,不仅会在创建新文件时生成正确的命名空间,还会对不符合规则的现有命名空间给出警告提示。
额外提醒:确认项目是SDK风格
如果你的项目是旧的非SDK风格(比如.NET Framework的老项目),<RootNamespace>的作用可能会有差异,建议先把项目迁移到SDK风格的csproj格式,这样上面的配置才能更好地生效。
内容的提问来源于stack exchange,提问作者ristonj
相关产品推荐
相关产品推荐

