Як налаштувати ярлик для приватного покоління Visual Studio для конструкторів?


120

VS 2017 (і, можливо, старіші версії) надає мені цей зручний невеликий ярлик для конструктора для створення private readonlyполя та призначення його.

Знімок екрана:

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

Це в результаті створює приватний член, який називається, userServiceа потім присвоює йому:

this.userService = userService;

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

_userService = userService;

Як я можу зробити так, щоб VS дотримувався цього правила стилю коду за допомогою ярликів для створення коду?


Це не має нічого спільного з фрагментами, цю функцію надає служба аналізу коду. Доступний з моменту додавання Roslyn. Провідне підкреслення - це порушення Правил програмування .NET Framework, і це не означає, що ви збираєтесь говорити програмісту Microsoft про те, щоб це змінити. Це стиль, який підштовхує Resharper, їм це не подобається, this.оскільки це змушує програміста не купувати його, подумайте про його використання.
Ганс Пасант

18
@HansPassant Кожен фрагмент сучасного коду, який я бачив, створений командами Microsoft, дотримується цієї _camelCaseконвенції для приватних членів. Див CoreFX C # Coding Style Керівництво , ASP.NET Сердечник Coding Style і навіть Rosyln сам код ... ??
kspearrin

5
@HansPassant Хороша новина ... хтось успішно розповів програмісту Microsoft, що він міг це змінити. Дивіться відповідь нижче.
kspearrin

Будь-яка ідея, як це зробити у Visual Studio для Mac?
Джейсон V

Відповіді:


229

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

  1. По-перше, потрібно визначити новий стиль називання, натиснувши кнопку "Керувати стилями іменування":

Діалогове вікно стилю іменування VS2017

  1. Потім натисніть знак +, щоб визначити нове правило для "Приватного або внутрішнього поля", яке використовує ваш новий стиль іменування:

Діалогове вікно параметрів VS2017

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

  2. Після цього, коли ви застосуєте рефакторинг "Створити та ініціалізувати поле", він буде названий основним підкресленням.


Я перебуваю на Visual Studio 15.8.8, і це була єдина відповідь, яка працювала на мене.
Джонатан Тейлор

25
FYI: Можливо, після цього, можливо, доведеться перезапустити VS.
Джефф

9
Добре працює у VS 2019.
Метт Стеннетт

3
Не всі герої носять накидки. Чудове пояснення. Чудово працює! Дякую.
датомль

1
Не потрібно перезавантаження у версії VS 2019, версія 16.5.4
Douglas HM

32

Налаштування .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 = _

Я отримав це звідси: https://github.com/dotnet/roslyn/isissue/22884#issuecomment-358776444


Дивно. Зараз я використовую VS 2017 15.6, і моя оригінальна відповідь все ще працює там. Хто знає ...
kspearrin

Я оновив до 15.6.3, і ця версія все ще працює для мене. Я використовую видання спільноти, можливо, ви ні?
michael_hook

Я не можу працювати ні на роботі, я використовую VS Pro 2017 версії 15.6.4
Ерік Шнайдер

1
слідуючи за цим також: docs.microsoft.com/en-us/visualstudio/ide/…
Ерік Шнайдер

Цей працював на мене, коли прийнятої відповіді не було. VS Pro 15.7.5
Licht

24

Цього можна досягти, створивши власне правило іменування 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 = _

Результат:

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


Мені здається, це довгий шлях виконання цього завдання. Дивіться відповідь @Maciek.
Ерік

Це був єдиний шлях назад, коли я спочатку відповів. Схоже, зараз вони додали інтерфейс користувача.
kspearrin

1
Редагування .editorconfig - це набагато приємніше рішення, ніж робити це через інтерфейс користувача.
gliljas

@Eric Це навпаки. Необхідно сказати кожному члену вашої команди налаштувати свій VS певним чином вручну , безумовно, набагато довше, виснажливіше і схильне до помилок, ніж перевірка .editorconfigфайлу в Git і знати, що з цього моменту у всіх будуть налаштовані автоматичні налаштування для виконання стиль кодування проекту.
Даніель Люцці
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.