在 VS2022 中,您可以设置解决方案范围的编辑器配置,并覆盖项目特定的编辑器配置吗?

Gre*_*reg 7 .net c# static-analysis editorconfig visual-studio-2022

在 Visual Studio 2022 中,您是否可以设置解决方案范围的 .editorconfig 文件,然后项目覆盖或添加到解决方案范围的特定 .editorconfig 文件?

就我而言,我希望对单元测试项目有不同的设置,和/或禁用遗留项目上的遗留方法警告。

Visual Studio 2022 支持此功能吗?


编辑:作为补充,我熟悉有关.editorconfig 文件夹层次结构的MS 文档

文档中的方法不适用于我的实际项目或特意创建的演示项目。它在 VS2022 17.4.3 和 Preview 17.5 上进行了测试。凭借经验,您将了解到文档和功能并不总是一致。;)

pfx*_*pfx 4

是的,文件的设置.editorconfig是分层的,子.editorconfig文件中的设置会添加到或覆盖父.editorconfig文件中的设置。

甚至可以通过包含root = true在子文件中来停止从子文件夹中的某个级别开始的继承.editorconfig

文档中

当您将.editorconfig文件添加到文件层次结构中的文件夹时,其设置将应用于该级别及以下级别的所有适用文件。

要覆盖部分或全部 EditorConfig 设置,请在.editorconfig您希望应用这些覆盖设置的文件层次结构级别添加一个文件。新的 EditorConfig 文件设置适用于同一级别的文件和任何子目录。

如果您想覆盖某些设置,但不是全部设置,请仅在.editorconfig文件中指定这些设置。只有那些在较低级别文件中明确列出的属性才会被覆盖。更高级别.editorconfig文件中的其他设置继续应用。

这样的文件夹和文件层次结构可能如下所示。

\ YourSolution
  - YourSolution.sln
  - .editorconfig
    ...      
  \ Src      
    \ Project1
      ...    
    \ Project2    
      ...
    \ Project3
      - .editorconfig    
      ...            
  \ Tests      
    - .editorconfig        
    \ Tests1
      ...          
    \ Tests2
      - .editorconfig
Run Code Online (Sandbox Code Playgroud)

.editorconfig文件也可以位于所有 Visual Studio 解决方案的公共父文件夹中。

\ YourSolutions
  - .editorconfig
  \ YourSolution1
    - YourSolution1.sln  
    ...
  \ YourSolution2
    - YourSolution2.sln
    ...
    
Run Code Online (Sandbox Code Playgroud)

示例文件。

.editorconfig文件

[*.cs]
dotnet_sort_system_directives_first = true
dotnet_style_require_accessibility_modifiers = 
for_non_interface_members:error
Run Code Online (Sandbox Code Playgroud)

子文件夹.editorconfig文件

[*.cs]
dotnet_sort_system_directives_first = false
dotnet_style_require_accessibility_modifiers = 
for_non_interface_members:silent
Run Code Online (Sandbox Code Playgroud)

在 VS2022 17.4.3+ 中,处理多个 .editorconfig 时,您可能需要使用标准文本编辑器而不是默认的 .editorconfig gui 工具。