EditorConfig 控件文件范围的命名空间声明
Posted
技术标签:
【中文标题】EditorConfig 控件文件范围的命名空间声明【英文标题】:EditorConfig control File-scoped namespace declaration 【发布时间】:2022-01-05 06:54:43 【问题描述】:我正在使用 C# 10 新功能 File-scoped namespace declaration
。
我有这样的旧代码
namespace SampleCode
public class MyClass
我将此代码移至
namespace SampleCode;
public class MyClass
但我有一堆警告:IDE0160: Convert to block scoped namespace
我如何确保人们只会收到旧语法的警告?
【问题讨论】:
您使用的是哪个 IDE? VS2022 和 VS 代码 【参考方案1】:要控制 editorconfig 中的代码样式,请使用以下行:
强制执行此样式
namespace SampleCode
public class MyClass
在.editorconfig
中添加这一行
# IDE0160: Convert to block-scoped namespace
csharp_style_namespace_declarations = block_scoped:warning
强制执行此样式
namespace SampleCode;
public class MyClass
在.editorconfig
中添加这一行
# IDE0160: Convert to file-scoped namespace
csharp_style_namespace_declarations = file_scoped:warning
【讨论】:
在 .editorconfig 中强制执行它可以选择将整个解决方案重构为 VS2022 预览版中可用的文件范围命名空间,太棒了!【参考方案2】:2022-01-27 更新
Jetbrain Rider 从 2021.3.2 版本开始支持 dotnet_diagnostic.IDE* 语法。这简化了设置到
编辑器配置
csharp_style_namespace_declarations = file_scoped
dotnet_diagnostic.IDE0161.severity = error
CSProj
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
这将涵盖所有场景。下面的原始答案。还是值得一读的。
您应该根据所需的状态、使用的 IDE 和工作流程来控制几种不同的设置。
它们在this 文章中有所描述,我强烈建议您在开始为您的项目构建.editorconfig
之前阅读这篇文章。
这里分别总结了文件范围和块范围的使用。
文件范围使用的EditorConfig/CSproj设置
Visual Studio(违规错误)
编辑器配置
csharp_style_namespace_declarations = file_scoped
dotnet_diagnostic.IDE0161.severity = error
注意
语法option = rule:severity
迟早会是deprecated。
JetBrain Rider(违规错误)
编辑器配置
csharp_style_namespace_declarations = file_scoped:error
注意
Rider 不支持 dotnet_diagnostic.IDE* 语法。
CLI 构建,例如 CI/CD 管道
编辑器配置
csharp_style_namespace_declarations = file_scoped
dotnet_diagnostic.IDE0161.severity = error
CSProj
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
推荐设置
编辑器配置
csharp_style_namespace_declarations = file_scoped:error
dotnet_diagnostic.IDE0161.severity = error
CSProj
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
注意
当前的 .NET EditorConfig 语法是不是一团糟? 肯定。
块范围使用的EditorConfig/CSproj设置
Visual Studio(违规错误)
编辑器配置
csharp_style_namespace_declarations = block_scoped
dotnet_diagnostic.IDE0160.severity = error
注意
语法option = rule:severity
迟早会是deprecated。
JetBrain Rider(违规错误)
编辑器配置
csharp_style_namespace_declarations = block_scoped:error
注意
Rider 不支持 dotnet_diagnostic.IDE* 语法。
CLI 构建,例如 CI/CD 管道
编辑器配置
csharp_style_namespace_declarations = block_scoped
dotnet_diagnostic.IDE0160.severity = error
CSProj
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
推荐设置
编辑器配置
csharp_style_namespace_declarations = block_scoped:error
dotnet_diagnostic.IDE0160.severity = error
CSProj
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
【讨论】:
以上是关于EditorConfig 控件文件范围的命名空间声明的主要内容,如果未能解决你的问题,请参考以下文章