在我的情况下,我希望为单元测试项目设置不同的设置,并且/或者在旧项目上禁用旧方法警告。
Visual Studio 2022支持这个吗?
编辑:另外需要说明的是,我熟悉MS文档中的.editorconfig文件夹层次结构。
文档中的方法在我的实际项目或特意创建的演示项目上都无法正常工作。它已在VS2022 17.4.3和预览版17.5上进行了测试。通过经验,您将会发现文档和功能并不总是一致的。;)
编辑:另外需要说明的是,我熟悉MS文档中的.editorconfig文件夹层次结构。
文档中的方法在我的实际项目或特意创建的演示项目上都无法正常工作。它已在VS2022 17.4.3和预览版17.5上进行了测试。通过经验,您将会发现文档和功能并不总是一致的。;)
是的,.editorconfig
文件的设置是分层的,子文件夹中的设置会添加或覆盖父文件夹中的设置。
甚至可以通过在子文件夹中包含 root = true
来停止从某个级别开始的继承。
来自文档。
当您将
.editorconfig
文件添加到文件层次结构中的文件夹中时,其设置适用于该级别及以下所有适用的文件。
如果您想覆盖某些设置,但不是全部设置,请在要覆盖一些或所有 EditorConfig 设置,请在您希望这些被覆盖的设置应用的文件层次结构级别上添加一个
.editorconfig
文件。新的 EditorConfig 文件设置适用于同一级别和任何子目录中的文件。
.editorconfig
文件中只指定这些设置。只有在底层文件中明确列出的属性才会被覆盖。其他来自更高级别的 .editorconfig
文件中的设置仍然适用。\ YourSolution
- YourSolution.sln
- .editorconfig
...
\ Src
\ Project1
...
\ Project2
...
\ Project3
- .editorconfig
...
\ Tests
- .editorconfig
\ Tests1
...
\ Tests2
- .editorconfig
根目录下的.editorconfig
文件也可以放在所有Visual Studio解决方案的共同父文件夹中。
\ YourSolutions
- .editorconfig
\ YourSolution1
- YourSolution1.sln
...
\ YourSolution2
- YourSolution2.sln
...
示例文件。
根目录下的.editorconfig
文件
[*.cs]
dotnet_sort_system_directives_first = true
dotnet_style_require_accessibility_modifiers =
for_non_interface_members:error
子文件夹 .editorconfig
文件
[*.cs]
dotnet_sort_system_directives_first = false
dotnet_style_require_accessibility_modifiers =
for_non_interface_members:silent
pfx的回答是使用.editorconfig文件的出色概述 - 如描述的那样,它们是基于目录的层次结构,因此优先级总是由属性定义接近文件的方式隐含(不能有两个具有相等优先级的.editorconfig文件)。
作为补充答案,因为您标记了C#,我还要提到.globalconfig文件。.editorconfig文件适用于目录的内容,而.globalconfig文件则用于基于项目(或作为NuGet包的一部分)应用分析器规则。例如,如果将文件从项目文件夹外链接到项目中,则不会将.editorconfig设置应用于该项目的文件,但将应用.globalconfig设置。
全局配置文件可以在每个项目中隐式或显式地继承,如果命名为除“.globalconfig”之外的其他名称,则可以按项目包含。请参见https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files#naming。如果您的项目结构类似于以下内容,则可以使用此功能:
\ YourSolution
- YourSolution.sln
- .editorconfig
- Directory.Build.props
...
\ Src
\ Feature1
\src
- Feature1.csproj
...
\test
- Feature1.Test.csproj
...
\ Feature2
\src
- Feature2.csproj
...
\test
- Feature2.Test.csproj
...
<PropertyGroup Condition="$(MSBuildProjectName.EndsWith('.Test'))">
<GlobalAnalyzerConfigFiles Include="AnalyzerSettingsForTestProjects.globalconfig" />
</PropertyGroup>
.editconfig
文件的示例摘录,你可以尝试一下。Visual Studio 2022 不需要任何额外的扩展程序。文档提到文件夹只是因为它不是解决方案或项目相关的。 - pfx