使用 Resharper 的 .editorconfig dotnet 命名设置

.editorconfig dotnet naming setting with Resharper

我需要一些帮助来理解与 .editorconfig 文件相关的一些行为,以及它在命名约定和继承方面的行为方式。 所以我想为某个项目引入类似于 SomeType_RestOfTheName 的命名样式。但是,我只想将此名称更改应用于某个项目而不是全局应用于解决方案。这意味着我最终得到的结构类似于:

+ <root>
    - Root.sln
    - .editorconfig // has the root = true flag
    + test
        + project
            - project.csproj    
            - .editorconfig

名称随意。
现在项目文件夹下的.editorconfig就是我添加的那个,内容如下:

[*]
# Microsoft .NET properties
dotnet_naming_rule.types_and_namespaces_rule.import_to_resharper = as_predefined
dotnet_naming_rule.types_and_namespaces_rule.resharper_style = AaBb, SomeType_ + AaBb
dotnet_naming_rule.types_and_namespaces_rule.severity = warning
dotnet_naming_rule.types_and_namespaces_rule.style = upper_camel_case_style
dotnet_naming_rule.types_and_namespaces_rule.symbols = types_and_namespaces_symbols
dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case
dotnet_naming_symbols.types_and_namespaces_symbols.applicable_accessibilities = *
dotnet_naming_symbols.types_and_namespaces_symbols.applicable_kinds = namespace,class,struct,enum,delegate

如您所知,其他设置将从根目录中的 .editorconfig 继承,只有目标项目才会有特定的命名约定。
注意:这适用于它确实应用了适当的命名风格。
现在我的问题。
如果我移动或注释掉上面的任何这些设置,整个命名约定将失败并显示警告。这是为什么?是否需要同时配置所有这些设置才能使其正常工作?以及关于 .editorconfig 文件的继承;如果我要将所有这些设置(期望 dotnet_naming_rule.types_and_namespaces_rule.resharper_style = AaBb, SomeType_ + AaBb 设置移动到根 .editorconfig 文件,命名约定也会失败吗?这是为什么?我认为它要么使用默认值,要么在根目录中查找值到根目录 .editorconfig?
这不是在 Rider 和 VS + Resharper 中都会发生,所以不确定它是与 Resharper 还是 Rider 相关的东西,或者它是否与需要如何定义某些设置有关(即需要全部设置在一起)?

对于任何好奇的人来说,这与其说是一个问题,不如说是用户的误解。在有关 .editorconfig 文件中命名样式的 MS 文档中,有这一行:

All naming rule properties are required for a rule to take effect.

在尝试了 .editorconfig 命名设置之后,我意识到我有点误解了结构。下面我修改了上面的结构,希望对任何遇到这个的人来说它是有意义的:

[*]
# Microsoft .NET properties - SomeType_ naming rule block
dotnet_naming_rule.sometype_prefix_rule.import_to_resharper = as_predefined
dotnet_naming_rule.sometype_prefix_rule.resharper_style = AaBb, SomeType_ + AaBb
dotnet_naming_rule.sometype_prefix_rule.severity = warning
dotnet_naming_rule.sometype_prefix_rule.style = upper_camel_case_style
dotnet_naming_rule.sometype_prefix_rule.symbols = sometype_prefix_symbols
dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case
dotnet_naming_symbols.sometype_prefix_symbols.applicable_accessibilities = *
dotnet_naming_symbols.sometype_prefix_symbols.applicable_kinds = namespace,class,struct,enum,delegate

但这归结为您使用自定义名称定义自定义规则这一事实,并且您必须配置所有相关属性,否则定义格式不正确且无法应用。