ReSharper 2025.3 Help

命名样式

ReSharper 帮助您定义、控制和应用代码中符号的期望命名样式。 有一组规则,每条规则都针对具有一组约束的特定标识符(例如,一条规则可以针对静态私有只读字段)。 每个规则可以有一个或多个关联样式,这些样式定义复合词的大小写、下划线、后缀、前缀等。

当 ReSharper 使用 代码补全代码生成 功能生成新代码时,应用 代码模板 并执行 重构 时,会考虑这些规则。 ReSharper 还可以帮助您 检测并修复 命名规则的违规情况。 如果需要,可以 配置或禁用 命名规则的自动检查。

配置命名规则

开箱即用,ReSharper 提供了一组涵盖所有标识符的命名规则。 这些规则基于 Microsoft 命名指南.NET 平台编码样式以及各种最佳实践。

如果您的个人偏好或公司标准与 ReSharper 的默认值不同,您可以灵活地配置命名样式:对于每种类型的标识符,您可以选择大小写规则、前缀和后缀、不同访问权限的变体、要忽略的缩写等。

您的命名样式偏好设置是通过 基于层的设置机制保存的。 除此之外,此机制还允许您为不同的解决方案维护不同的偏好,并将这些偏好保存在 VCS 中并自动与您的团队成员共享。

命名规则的属性

每条命名规则具有以下属性:

  • 规则描述 :一个任意描述,帮助理解规则的适用范围。

  • 应用此样式 :规则允许的一个或多个命名样式。 使用相应的按钮添加或删除样式。

    当列表中选择了一个样式时,在 样式 选择器中选择基础样式,例如 UpperCamelCaselowerCamelCase ,并可选地添加前缀和后缀。

    当单条规则有多个样式时,如果符号名称至少与其中一个样式匹配,ReSharper 不会 报告代码样式违规。 否则,ReSharper 会检测到代码样式违规,并建议根据默认样式(列表中的第一个样式)重命名符号。 要更改默认样式,请使用 上移 ThemedIcon.Up.Screen.(Gray).png下移 ThemedIcon.Down.Screen.(Gray).png 按钮。

  • 至以下元素 :此区域定义命名规则的适用范围。 使用相应的复选框指定必须符合规则的类型和具有哪些修饰符的成员。

  • 启用检查 :此复选框允许您禁用与此规则相关的 代码样式违规报告 ,同时仍允许 ReSharper 检测其他命名规则违规。

    当此复选框被禁用时,ReSharper 在使用 代码补全代码生成功能生成新代码时,应用 代码模板并执行 重构时,仍会遵守该规则。 还有几种方法可以 禁用所有命名规则的自动检查

ReSharper:添加/编辑命名规则对话框

修改命名规则

  1. 执行以下操作之一:

    • 在具有不一致命名的高亮符号上按 Alt+Enter ,然后选择 检查“不一致的命名” | 更改命名规则“[rule name]”的设置

    • 从主菜单中选择 ReSharper | 选项 | 代码编辑 | C# | 命名样式 ,选择所需规则,然后单击 编辑 ThemedIcon.EditorOptionsPage.Screen.(Gray).png 或双击它。

  2. 根据需要配置命名规则的 属性

  3. 如果规则编辑器是从选项对话框中打开的,请单击 确定 关闭 编辑规则设置 对话框。

  4. 在 选项 对话框中点击 保存 以应用修改,让 ReSharper 选择保存位置,或者通过从 保存到 选择器中选择特定的设置层来保存修改。 有关更多信息,请参见 管理和共享 resharper 设置

如果现有规则对您的命名约定不够细化,您可以添加更多规则。 例如,您可能希望枚举具有大写驼峰命名法并带有 E 前缀。

添加命名规则

  1. 从主菜单中选择 ReSharper | 选项 或按下 Alt+R O ,然后在左侧选择 代码编辑 | C# | 新命名样式

  2. 单击 '+'.

  3. 根据需要配置命名规则的 属性

  4. 单击 确定 关闭 添加命名规则 对话框。

  5. 在 选项 对话框中点击 保存 以应用修改,让 ReSharper 选择保存位置,或者通过从 保存到 选择器中选择特定的设置层来保存修改。 有关更多信息,请参见 管理和共享 resharper 设置

任何命名规则都可以被移除。 移除规则的潜在后果是某些类型的标识符将不受任何规则的覆盖。 在这种情况下,当 ReSharper 使用 代码补全代码生成功能生成新代码时,应用 代码模板并执行 重构时,ReSharper 将应用其内部默认值。

要移除规则,请在 ReSharper 选项 代码编辑 | C# | 新命名样式 页上选择它,然后单击 Alt+R, O Delete ThemedIcon.Delete.Screen.(Gray).png

使用 EditorConfig 配置命名规则

如果您 使用 EditorConfig来维护项目的代码样式,您还可以从 .editorconfig 文件中配置命名规则。

要从 EditorConfig 配置命名规则,您需要在 ReSharper 选项 代码检查 | 设置 页上选择 从 editorconfig 和项目设置中读取设置 复选框 Alt+R, O

您还可以将已在 ReSharper 设置中配置的命名样式 导出到一个 .editorconfig 文件。

.editorconfig 文件中的命名样式设置是使用 .NET 命名约定的属性配置的: dotnet_naming_rule.*dotnet_naming_style.*dotnet_naming_symbols.*——如果指定的 符号类型可以与 ReSharper 命名设置中可用的符号类型匹配,则会生效。

此外,ReSharper 可以使用许多自定义属性来支持 .NET 命名约定未涵盖的情况。 这些属性主要出现在您导出 ReSharper 命名设置时的 .editorconfig 文件中。

  • import_to_resharper

    此后缀允许指定是否应由 ReSharper 忽略特定属性(truefalse)。

    当 ReSharper 将其设置导出到 editorconfig 时,它还可能写入 as_predefined——请勿手动更改。 示例: dotnet_naming_rule.protected_rule_rule.import_to_resharper = false

  • resharper_description

    允许为工具提示指定规则描述。 示例: dotnet_naming_rule.protected_rule_rule.resharper_description = Something

  • resharper_guid

    ReSharper 在导出时可以使用此属性,请勿手动更改。 示例: dotnet_naming_rule.protected_rule_rule.resharper_guid = eb5720f3-bc0a-442d-9f3c-8dc32b7c5c12

  • resharper_style

    允许指定可能的样式列表,这些样式可以扩展 .NET 命名样式列表。 每种样式可以是 "style" 或 "prefix + style + suffix" 或 "prefix + style" 或 "style + suffix"。

    样式可以是以下之一: AaBbAaBb_AaBbAaBb_aaBbaaBbaaBb_AaBbaaBb_aaBbAA_BBaa_bbAa_bb

    您可以在列表末尾添加 :do_not_check 以禁用检查。

    示例: dotnet_naming_rule.protected_rule_rule.resharper_style = AA_BB, aa_bb, I+AaBb, aaBb_AaBb, AaBb+Local

  • resharper_applicable_kinds

    应用命名规则的标识符类型: namespacetypetest_typeclasspure_classrecordstructinterfacedelegateenumtype_membertest_membermethodasync_methodextension_methodpropertyeventany_fieldfield (简单字段,非只读或常量)、 readonly_fieldconstant_fieldunity_serialised_field (如果安装了 Unity Support插件)、 enum_memberlocallocal_variablecatch_variablelocal_constantparameterlambda_parameterlabeltype_parameterlocal_function

    示例: dotnet_naming_symbols.protected_rule_symbols.resharper_applicable_kinds = pure_class

  • resharper_required_modifiers

    staticinstance (无、其中之一或两者)。 示例: dotnet_naming_symbols.protected_rule_symbols.resharper_required_modifiers = static, instance

  • resharper_csharp_naming_rule

    使用与 resharper_style 相同的值,但此设置只能用于指定预定义规则之一: types_and_namespacesinterfacestype_parametersmethodpropertyeventlocalslocal_constantsparameterspublic_fieldsprivate_instance_fieldsprivate_static_fieldsconstantsprivate_constantsstatic_readonlyprivate_static_readonlyenum_memberlocal_functionsother

    示例: resharper_csharp_naming_rule.private_instance_fields = I+AaBb_AaBb,_+aaBb:do_not_check

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

忽略与 CamelCase 命名样式冲突的大写缩写

有时,您可能希望在 CamelCase 符号名称中使用大写缩写、首字母缩略词或首字母缩写(例如 MS 表示 MicroSoft)。 默认情况下,ReSharper 报告这为不一致的驼峰命名,因为有多个大写字母连续出现:

ReSharper:命名样式。 缩写

为避免这种情况,您可以配置要忽略的不一致命名检查的缩写列表。

需要注意的是,大写缩写不应与为特定标识符类型定义的命名样式相矛盾。

例如,如果您将 MS 添加到忽略的缩写中, MSBuilder 将是具有 UpperCamelCase 样式的标识符的可接受名称,但不适用于具有 lowerCamelCaseall_lower 命名样式的标识符。

同样, myMSBuilder 对于 lowerCamelCase 是可以的,但不适用于 UpperCamelCase 样式的标识符。

将缩写添加到忽略列表

  1. 在编辑器中,将插入符号放置在名称中使用了缩写的高亮符号上。

  2. Alt+Enter 或点击插入符号左侧的 操作指示器以打开 操作列表

  3. 选择 检查“命名不一致” | 将 [缩写] 添加到缩写列表

    将缩写添加到忽略列表中
  4. 如果需要,您可以选择将忽略的缩写保存到特定的 设置层

    ReSharper:将忽略的缩写保存到设置层

如果您有许多应允许在符号名称中使用的缩写,可以编辑忽略的缩写列表。

编辑忽略的缩写列表

  1. 从主菜单中选择 ReSharper | 选项 或按下 Alt+R O ,然后在左侧选择 代码编辑 | C# | 新命名样式

  2. 单击 ... ,位于 缩写 旁边。

  3. 输入一个缩写并单击 添加。 对所有必要的缩写重复此操作,然后单击 确定

  4. 或者,手动编辑 缩写 字段,使用空格作为分隔符。

  5. 在 选项 对话框中点击 保存 以应用修改,让 ReSharper 选择保存位置,或者通过从 保存到 选择器中选择特定的设置层来保存修改。 有关更多信息,请参见 管理和共享 resharper 设置

检测并修复命名规则的违规

ReSharper 使用“不一致命名”代码检查来检测代码中命名规则的违规。 默认情况下,此检查始终在 设计时代码检查期间应用,并在编辑器中将检测到的违规高亮为 警告。 例如,根据默认样式,接口的名称应具有 'I' 前缀。 如果接口名称不符合此规则,ReSharper 会高亮显示此名称,并在您将鼠标悬停在其上时通知您问题所在:

ReSharper:突出显示的命名样式违规

如果您想查找当前文件之外的命名样式违规,可以在项目或整个解决方案中运行“不一致命名”检查。

在特定范围内查找命名样式违规

  1. 在编辑器中,将插入符号放置在具有不一致命名的高亮符号上。

  2. Alt+Enter 或点击插入符号左侧的 操作指示器以打开 操作列表

  3. 选择 检查“命名不一致” | 在文件中查找类似问题 然后选择所需的范围。

    ReSharper:使用操作列表查找命名样式问题
  4. 所有发现的命名样式违规将显示在 检查结果窗口 中。

    ReSharper:解决方案中的命名样式违规
  5. 您可以双击检测到的问题以导航到相应符号的代码。

对于编辑器中高亮显示的大多数命名样式违规,ReSharper 会建议一个具有符合命名的 快速修复。 您可以按下 Alt+Enter 并在操作列表中选择 重命名为 [符合规范的名称]

命名样式违规的快速修复

也可以在当前文件、项目或解决方案中使用 范围内修复功能自动修正命名样式违规。

但是,如果具有计算出的符合命名的符号已存在于同一命名空间中,则不会建议快速修复。 您可以使用 重命名重构 修复此类符号的命名。

配置和禁用命名规则的自动检查

如果您不希望 ReSharper 检查现有代码库中的命名样式,您可以禁用负责此检查的代码检查,或者禁用特定规则的自动检查。 但是,即使禁用了自动检查,当 ReSharper 使用 代码补全代码生成功能生成新代码时,应用 代码模板并执行 重构时,所有命名规则仍会被遵守。

禁用命名样式的自动检查

  • 在具有不一致命名的高亮符号上按 Alt+Enter ,然后选择 检查“命名不一致” | 配置检查严重性 | 不显示

  • 清除 ReSharper 选项 代码编辑 | C# | 新命名样式 页上的 启用“命名不一致”检查 复选框 Alt+R, O

  • 在 ReSharper 选项 Alt+R, O 代码检查 | 检查严重性 页面上,开始键入 '不一致命名',然后清除对应代码检查旁的复选框。

  • 如果您在解决方案中 使用 .editorconfig ,您可以在特定范围内禁用 “不一致命名”检查

    resharper_inconsistent_naming_highlighting=none

禁用特定命名规则的自动检查

  1. 执行以下操作之一:

    • 在具有不一致命名的高亮符号上按 Alt+Enter ,然后选择 检查“不一致的命名” | 更改命名规则“[rule name]”的设置

    • 从主菜单中选择 ReSharper | 选项 | 代码编辑 | C# | 命名样式 ,选择所需规则,然后单击 编辑 ThemedIcon.EditorOptionsPage.Screen.(Gray).png 或双击它。

  2. 在打开的 编辑规则设置 对话框中,清除 启用检查 复选框。

  3. 在 选项 对话框中点击 保存 以应用修改,让 ReSharper 选择保存位置,或者通过从 保存到 选择器中选择特定的设置层来保存修改。 有关更多信息,请参见 管理和共享 resharper 设置

从现有代码中使用 C# 命名规则

如果您从公共仓库检出解决方案或临时加入一个已建立不同代码命名样式的团队,您可能希望遵循此解决方案中的命名规则,但同时不更改全局配置的命名规则。

ReSharper 会自动处理此类情况——当您打开一个符号命名与全局设置不同的新解决方案时,它会检测与全局设置不同的命名规则,相应地修改这些规则,然后将修改后的规则保存到 “解决方案个人”设置层 .sln.DotSettings.user 文件位于解决方案旁边)。

如果在打开新解决方案时发生这种情况,ReSharper 会在编辑器中显示通知:

ReSharper:命名规则自动检测通知

您可以单击 配置 打开相应的设置页面(代码编辑 | C# | 命名样式)。 在此设置页面上,根据解决方案代码更改的规则会以黄色高亮显示。 如果您希望使用 ReSharper 的 默认命名规则或以自己的方式 配置命名样式 ,请清除 使用自动检测的规则 复选框。

ReSharper 用黄色高亮显示自动设置的命名规则

处理 Visual Studio 中事件的命名样式

默认情况下,ReSharper 为字段上的事件订阅建议 $object$On$event$ 命名模式,为 this 上的事件订阅建议 On$event$ ,这些模式既用于 ReSharper 生成新事件时,也用于检查现有事件的命名样式。 如果需要,您可以在 ReSharper 选项 代码编辑 | C# | 新命名样式 页上更改这些模式。

当 Visual Studio 生成新事件时,它使用另一种命名模式: $object$_$event$。 如果您有一个现有项目,其中事件以这种方式命名,并且您不想重命名它们,请确保 ReSharper 选项 代码编辑 | C# | 新命名样式 页上的 支持 Microsoft 事件命名样式 复选框已选中。 这将抑制这些事件上的“不一致命名”警告。

在不同语言中的适用性

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

语言:C#

语言:VB.NET

语言:C++

语言:ASP.NET

语言:Razor

语言:XAML

语言:Resx

语言:构建脚本

语言:SQL

功能在 C# 中可用

此功能适用于 Visual Basic

功能在 C++ 中可用

此功能适用于 ASP.NET

功能在 Razor 中不可用

此功能适用于 XAML

此功能不适用于资源文件

此功能不适用于构建脚本文件

功能在 SQL/NoSQL 文件和注入中不可用

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

最后修改日期: 2025年 12月 8日