Как настроить ярлык генерации выделенного поля Visual Studio для конструкторов?

VS 2017 (и, возможно, старые версии) дает мне этот удобный небольшой конструктор ярлык для создания поля private readonly и его назначения.

Скриншот:

введите описание изображения здесь

В результате создается частный член с именем userService, а затем присваивается его:

this.userService = userService;

Это противоречит стилю кода, который я использую для обозначения всех закрытых членов с префиксом _, что приводит к присваиванию, которое должно выглядеть следующим образом:

_userService = userService;

Как я могу сделать так, чтобы VS выполнял это правило стиля кода с помощью ярлыков генерации кода?

Ответ 1

Это также может быть достигнуто непосредственно в Visual Studio. Просто перейдите на Tools -> Options -> Text Editor -> C# -> Code Style -> Naming.

  1. Во-первых, вам нужно определить новый стиль именования, нажав кнопку "Управление стилями именования":

VS2017 Naming style dialog

  1. Затем нажмите знак "+", чтобы определить новое правило для "Частного или внутреннего поля", в котором используется новый стиль именования:

VS2017 Options dialog

  1. Перезапустите Visual Studio

  2. После этого, когда вы примените рефакторинг "Создать и инициализировать поле", он будет назван с подчеркиванием.

Ответ 2

Настройки.editorconfig - ответ kspearrin не работал для меня, я должен был использовать их (для VS2017 Version 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 = _

Я получил их отсюда: https://github.com/dotnet/roslyn/issues/22884#issuecomment-358776444

Ответ 3

Этого можно достичь, создав собственное правило именования Roslyn Code Analyzer. Добавьте в свое решение .editorconfig чтобы указать пользовательские соглашения об именах.

Подробнее о них читайте здесь: 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 = _

Результат:

enter image description here