如何为构造函数自定义Visual Studio的私有字段生成快捷方式?

ksp*_*rin 96 .net c# visual-studio

VS 2017(也许是olders版本)给了我这个方便的小构造函数快捷方式来生成一个private readonly字段并分配它.

截图:

在此输入图像描述

这最终会生成一个名为的私有成员userService,然后将其分配给:

this.userService = userService;
Run Code Online (Sandbox Code Playgroud)

这违背了我使用的代码样式,即使用前缀命名所有私有成员,_从而产生如下所示的赋值:

_userService = userService;
Run Code Online (Sandbox Code Playgroud)

我怎样才能使VS遵守代码生成快捷方式的代码样式规则?

小智 153

这也可以直接在Visual Studio中实现.去吧Tools -> Options -> Text Editor -> C# -> Code Style -> Naming.

首先,您需要通过单击"管理命名样式"按钮来定义新的命名样式:

VS2017命名样式对话框

然后单击+号以定义"私有或内部字段"的新规则,该规则使用新的命名样式:

VS2017选项对话框

之后,当您应用"创建并初始化字段"重构时,它将以前导下划线命名.

  • 仅供参考:此后您可能需要重新启动VS. (22认同)
  • VS 2019 版本 16.5.4 无需重启 (6认同)
  • 不是所有的英雄穿着斗篷。很好的解释。效果很好!谢谢。 (4认同)
  • 在VS 2019中效果很好。 (3认同)

小智 27

.editorconfig设置是kspearrin的答案对我不起作用我必须使用这些(对于VS2017版本15.4.0):

[*.{cs,vb}]
dotnet_naming_rule.private_members_with_underscore.symbols  = private_fields
dotnet_naming_rule.private_members_with_underscore.style    = prefix_underscore
dotnet_naming_rule.private_members_with_underscore.severity = suggestion

dotnet_naming_symbols.private_fields.applicable_kinds           = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _
Run Code Online (Sandbox Code Playgroud)

我从这里得到这些:https://github.com/dotnet/roslyn/issues/22884#issuecomment-358776444

  • 不幸的是,上面的设置在 web 项目中不起作用。 (3认同)

ksp*_*rin 19

这可以通过创建自己的Roslyn Code Analyzer命名规则来实现..editorconfig在解决方案中添加a 以指定自定义命名约定.

在这里阅读更多相关信息:https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

为了从问题中获得所需的效果,以下内容将起作用:

[*.{cs,vb}]
dotnet_naming_rule.private_members_with_underscore.symbols  = private_fields
dotnet_naming_rule.private_members_with_underscore.style    = prefix_underscore
dotnet_naming_rule.private_members_with_underscore.severity = suggestion

dotnet_naming_symbols.private_fields.applicable_kinds           = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_fields.required_modifiers         = readonly

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

  • @Eric 这是相反的。必须告诉团队中的每个成员以某种方式**手动**配置他们的 VS 肯定比签入 [`.editorconfig`](https://docs.microsoft. com/en-us/visualstudio/ide/create-portable-custom-editor-options?view=vs-2019) 文件在 Git 中,并知道从那一刻起 **每个人都将自动调整其设置以遵循项目的编码风格。** (8认同)
  • 编辑 .editorconfig 是比通过 UI 更好的解决方案。 (5认同)

ale*_*_si 10

我阅读了以前的解决方案,尽管它们看起来是正确的,但让配置在 VS2022 中正常工作的唯一方法是正确排序 .editorconfig 条目,如下所示:

# Use underscores for private fields
[*.{cs,vb}]
dotnet_naming_symbols.private_fields.applicable_kinds           = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _

dotnet_naming_rule.private_fields_with_underscore.symbols  = private_fields
dotnet_naming_rule.private_fields_with_underscore.style    = prefix_underscore
dotnet_naming_rule.private_fields_with_underscore.severity = warning
Run Code Online (Sandbox Code Playgroud)