EditorConfig 控件文件范围的命名空间声明

EditorConfig control File-scoped namespace declaration

我正在使用 C# 10 的新功能 File-scoped namespace declaration

我有这样的旧代码

namespace SampleCode
{
    public class MyClass
    {
    }
}

我正在将此代码移至

namespace SampleCode;

public class MyClass
{
}

但是我有一堆警告:IDE0160: Convert to block scoped namespace

如何确保人们只会收到旧语法的警告?

要控制 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

2022-01-27更新

JetBrains 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


JetBrains 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


JetBrains 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>