ReSharper 2025.2 Help

使用 EditorConfig

ReSharper 支持 代码格式样式代码语法样式C# 命名样式 ,以及在 EditorConfig 格式中定义的 代码检查严重性级别

您可以通过观看这段 2 分钟的概述视频开始,视频中 Matt Ellis 展示了 ReSharper 如何帮助您使用 EditorConfig 维护整个格式规则配置。

什么是 EditorConfig,ReSharper 如何扩展它?

EditorConfig 是一种配置文件约定,用于在团队成员之间以及他们可能使用的不同 IDE 之间定义和维护一致的代码样式。 这些样式保存在类似 INI 的文件中,文件名为 .editorconfig ,其中部分名称是文件掩码,部分中的属性定义了与这些掩码匹配的文件的代码样式。

根据 EditorConfig 约定,ReSharper 将应用定义在当前文件目录及其所有父目录中的名为 .editorconfig 的文件中的代码样式,直到到达根文件路径或找到带有 root=true 的 EditorConfig 文件。 在 .editorconfig 文件中指定的文件掩码,例如 *Test.cs ,也会被考虑。

ReSharper 支持 标准 EditorConfig 属性 、最常用的 .NET 编码约定的 EditorConfig 属性 ,并提供一组 自定义 EditorConfig 属性 ,这些属性允许对格式、语法和代码检查规则进行更细粒度的配置——实际上,您可以在 ReSharper 的 选项 对话框中配置的每个代码样式偏好都有其对应的 EditorConfig 属性。 这意味着您可以在 EditorConfig 文件中维护 代码样式和检查规则的完整配置。 以下是 ReSharper 支持的 EditorConfig 属性示例:

root = true [*] # Most of the standard properties are supported indent_size=2 max_line_length=100 # Most frequently used .NET-coding-convention properties are supported csharp_space_between_parentheses=expressions, type_casts, control_flow_statements csharp_style_var_for_built_in_types=true # dotnet_diagnostic rules are supported dotnet_diagnostic.CS1058.severity = hint # ReSharper custom properties for code formatting styles resharper_csharp_brace_style=next_line resharper_csharp_blank_lines_around_invocable=2 # ReSharper custom properties for code syntax styles csharp_default_private_modifier=explicit braces_for_ifelse=not_required # ReSharper custom properties for code inspections resharper_possible_null_reference_exception_highlighting=error resharper_replace_with_string_is_null_or_empty_highlighting=none

解决方案中的 EditorConfig

默认情况下,ReSharper 会考虑 EditorConfig 属性,并且这些属性将覆盖在 ReSharper 和 Visual Studio 选项 中定义的偏好。 如果您希望 ReSharper 忽略代码格式和代码语法的 EditorConfig 样式,请清除 ReSharper 选项 的 代码编辑 | C++ | 格式化样式 | 常规 页面上的相应复选框。

要从 EditorConfig 配置代码检查和命名样式,您需要在 ReSharper 选项 的 代码检查 | 设置 页面上选择 从 editorconfig 和项目设置中读取设置 复选框。

当启用 EditorConfig 支持并且存在影响当前文件的 .editorconfig 文件时,ReSharper 将帮助您了解应用了哪些 EditorConfig 样式以及这些设置的来源:

  • 在 ReSharper 的代码样式和格式选项页面上,如果页面上的至少一个偏好被当前文件的 EditorConfig 样式覆盖,您将看到一个黄色警告,每个被覆盖的偏好也会以黄色突出显示。 例如:

    被 EditorConfig 样式覆盖的代码格式选项
  • 文件格式信息窗口 中,您可以查看和研究所有影响当前文件的 .editorconfig 文件:

    ReSharper。 文件格式信息窗口

将代码样式设置导出到 EditorConfig

如果您打算通过 EditorConfig 共享代码样式设置,您可能希望将 ReSharper 中已配置的样式导出到 .editorconfig 文件。

  1. 从主菜单中选择 ReSharper | 选项 或按 Alt+R O ,然后在左侧选择 代码编辑 | 通用格式化样式

  2. 代码样式配置文件 部分,单击 将当前样式写入 .editorconfig。 这将打开 导出到 .editorconfig 对话框。

  3. 默认情况下,ReSharper 会将设置写入当前解决方案根目录中的一个新的 .editorconfig 文件。 如果存在一个或多个 .editorconfig 文件,ReSharper 将使用目录层次结构中最近的文件来保存设置。 如果需要,您可以使用对话框顶部的路径选择器更改目标文件。

  4. 部分(文件掩码) 字段中,您可以指定一个通配符模式,用于生成属性的部分。 请注意,如果您选择导出标准 EditorConfig 属性,它们将根据语言约定放置在其他部分中。

  5. 要进行更详细的配置,您可以展开 显示其他选项 并选择以下选项:

    导出具有默认值的设置

    默认情况下,ReSharper 仅保存您更改过的设置的属性。 因此,只有这些设置会生效并覆盖其他设置,当 ReSharper 或 Rider 读取生成的 .editorconfig 时。 所有其他设置将采用 IDE 中指定的值。

    如果启用此选项,ReSharper 将保存所有设置的当前状态,无论它们是否已更改。 这样,您将获得一个更严格的 .editorconfig ,当 ReSharper 或 Rider 读取时,它将覆盖所有代码样式和格式设置。

    移除值不明确的现有属性

    某些 EditorConfig 属性可能对应于多个 ReSharper 特定属性,从而允许更精确的配置。 因此,可能会出现某个更通用的属性与某些相关的 ReSharper 特定属性一致但与其他属性矛盾的情况,这使得该更通用的属性变得模糊。

    由于更详细的属性具有更高的优先级,这种情况并不是问题,也无需移除具有模糊值的属性。

    唯一可能需要移除具有模糊值的属性的情况是,当项目的 EditorConfig 样式仅由 ReSharper 和 Rider 读取,并且您希望从 .editorconfig 文件中移除冗余。

    导出标准 .editorconfig 属性

    定义是否保存 标准 .editorconfig 属性 。这些属性在生成的 EditorConfig 被其他编辑器和 IDE 读取时也会生效。

    导出跨编辑器的特定语言属性

    定义是否保存 .NET 编码约定属性。 这些属性在生成的 EditorConfig 被其他编辑器和 IDE 读取时也会生效。

    导出 JetBrains Rider/ReSharper 特定的代码样式属性

    定义是否保存产品特定的 代码格式样式代码语法样式

    导出 JetBrains Rider/ReSharper 特定的检查严重性

    定义是否保存 ReSharper 可配置代码检查的 严重性级别

  6. 如果指定位置中已存在 .editorconfig 文件,则可能会存在该文件中已有属性值与 ReSharper 即将保存的属性值之间的冲突。 这些属性将以红色显示,如果您继续保存,冲突将以新生成的值为准进行解决。

  7. 单击 导出。 ReSharper 将在指定位置创建或更新 .editorconfig 文件。

您还可以在 上下文配置 格式规则后,将格式样式保存到 EditorConfig。

ReSharper:在上下文配置后将格式样式保存到 EditorConfig

交互式编辑 .editorconfig

尽管 EditorConfig 格式的设计使得配置文件可以在文本编辑器中读取和编辑,但记住 所有可用的 EditorConfig 属性 并找到正确的属性可能会成为一个问题。

为了避免手动编辑 .editorconfig 时可能出现的错误,您可以改为交互式编辑。

  1. 从主菜单中选择 ReSharper | 选项 或按 Alt+R O ,然后在左侧选择 代码编辑 | 通用格式化样式

  2. 代码样式配置文件 部分,单击 交互式编辑 .editorconfig

  3. 选项 对话框将打开,仅显示影响代码样式设置的页面:

    ReSharper:交互式编辑 .editorconfig
  4. 如果存在影响编辑器中当前活动文件的 .editorconfig 文件,ReSharper 将使用这些文件中的设置初始化对话框中的值。 否则,将使用默认值。

    请注意,影响您代码的 .editorconfig 文件可能位于解决方案目录之外,在其父目录中。

  5. 使用对话框中的控件查看和配置 EditorConfig 设置。 完成后,单击 保存。 这将打开 导出到 .editorconfig 对话框。

  6. 默认情况下,ReSharper 会将设置写入当前解决方案根目录中的一个新的 .editorconfig 文件。 如果存在一个或多个 .editorconfig 文件,ReSharper 将使用目录层次结构中最近的文件来保存设置。 如果需要,您可以使用对话框顶部的路径选择器更改目标文件。

  7. 部分(文件掩码) 字段中,您可以指定一个通配符模式,用于生成属性的部分。 请注意,如果您选择导出标准 EditorConfig 属性,它们将根据语言约定放置在其他部分中。

  8. 要进行更详细的配置,您可以展开 显示其他选项 并选择以下选项:

    导出具有默认值的设置

    默认情况下,ReSharper 仅保存您更改过的设置的属性。 因此,只有这些设置会生效并覆盖其他设置,当 ReSharper 或 Rider 读取生成的 .editorconfig 时。 所有其他设置将采用 IDE 中指定的值。

    如果启用此选项,ReSharper 将保存所有设置的当前状态,无论它们是否已更改。 这样,您将获得一个更严格的 .editorconfig ,当 ReSharper 或 Rider 读取时,它将覆盖所有代码样式和格式设置。

    移除值不明确的现有属性

    某些 EditorConfig 属性可能对应于多个 ReSharper 特定属性,从而允许更精确的配置。 因此,可能会出现某个更通用的属性与某些相关的 ReSharper 特定属性一致但与其他属性矛盾的情况,这使得该更通用的属性变得模糊。

    由于更详细的属性具有更高的优先级,这种情况并不是问题,也无需移除具有模糊值的属性。

    唯一可能需要移除具有模糊值的属性的情况是,当项目的 EditorConfig 样式仅由 ReSharper 和 Rider 读取,并且您希望从 .editorconfig 文件中移除冗余。

    导出标准 .editorconfig 属性

    定义是否保存 标准 .editorconfig 属性 。这些属性在生成的 EditorConfig 被其他编辑器和 IDE 读取时也会生效。

    导出跨编辑器的特定语言属性

    定义是否保存 .NET 编码约定属性。 这些属性在生成的 EditorConfig 被其他编辑器和 IDE 读取时也会生效。

    导出 JetBrains Rider/ReSharper 特定的代码样式属性

    定义是否保存产品特定的 代码格式样式代码语法样式

    导出 JetBrains Rider/ReSharper 特定的检查严重性

    定义是否保存 ReSharper 可配置代码检查的 严重性级别

  9. 如果指定位置中已存在 .editorconfig 文件,则可能会存在该文件中已有属性值与 ReSharper 即将保存的属性值之间的冲突。 这些属性将以红色显示,如果您继续保存,冲突将以新生成的值为准进行解决。

  10. 单击 导出。 ReSharper 将在指定位置创建或更新 .editorconfig 文件。

使用 EditorConfig 禁用 ReSharper 格式化器

在 C#、C++、JavaScript、TypeScript、HTML 和 Protobuf 中,您可以使用带有 disable_formatter=true 的 EditorConfig 掩码禁用 ReSharper 格式化器。

使用 EditorConfig 替代代码清理配置文件

ReSharper 允许您为 解决方案中的大多数文件 使用特定的代码清理配置文件,并为某些文件使用不同的代码清理配置文件。 您还可以完全跳过某些文件的清理。

为此,请使用 用于清理配置文件的 resharper_substitution EditorConfig 属性,并采用以下语法:

[reformatIfRunWithFullCleanup.cs] resharper_substitution_for_cleanup_profile.anysuffix=Built-in:Full Cleanup => Built-in: Reformat Code [alwaysReformat.cs] resharper_substitution_for_cleanup_profile=* = > Built-in:Reformat Code [skipIfRunWithFullCleanup.cs] resharper_substitution_for_cleanup_profile=Built-in:Full Cleanup => skip [skipCleanup.cs] resharper_substitution_for_cleanup_profile=* => skip

此语法允许您在使用特定配置文件启动 Code Cleanup 时使用不同的配置文件——在此情况下,在 => 左侧指定该配置文件的名称;或者在使用任意配置文件启动 Code Cleanup 时——在此情况下,在 * 左侧写入 =>。 在 => 右侧指定应使用的配置文件名称,或者如果不应对匹配的文件应用 Code Cleanup,则写入 跳过

标准 EditorConfig 属性

ReSharper 将应用以下标准 EditorConfig 属性:

  • indent_size

  • indent_style

  • tab_width

  • max_line_length

  • insert_final_newline

请注意,在 ReSharper 的 自定义 EditorConfig 属性 中,有些属性会覆盖特定语言的标准属性。 例如,您可以使用 indent_size 属性为所有语言设置默认缩进大小,同时使用 csharp_indent_size 属性为 C# 文件设置不同的缩进大小。

自定义 EditorConfig 属性

ReSharper 提供的自定义 EditorConfig 属性允许配置代码样式和代码检查设置。 代码检查的属性可以在 C# 代码检查 中找到。 代码样式和格式设置的属性列在 按语言和类别划分的 EditorConfig 属性 主题的子页面中。

.NET 编码约定的 EditorConfig 属性

从 2025.2 版本开始,ReSharper 支持 .NET 编码约定 中最常用的 EditorConfig 属性:

此功能在以下语言和技术中 受支持

语言:C#

语言:VB.NET

语言:C++

语言:ASP.NET

语言:Razor

语言:XAML

语言:Resx

语言:构建脚本

语言:SQL

此功能在 C# 中可用

此功能在 Visual Basic 中可用

此功能在 C++ 中可用

此功能在 ASP.NET 中可用

此功能在 Razor 中可用

此功能在 XAML 中可用

此功能在资源文件中可用

此功能在构建脚本文件中可用

此功能适用于 SQL/NoSQL 文件和注入

此处提供的说明和示例针对在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。

最后修改日期: 2025年 9月 27日