Wie passe ich die Verknüpfung zur privaten Feldgenerierung von Visual Studio für Konstruktoren an?


120

VS 2017 (und möglicherweise ältere Versionen) bietet mir diese praktische kleine Konstruktorverknüpfung, um ein private readonlyFeld zu generieren und es zuzuweisen.

Bildschirmfoto:

Geben Sie hier die Bildbeschreibung ein

Dies führt dazu, dass ein privates Mitglied namens generiert wird userServiceund es dann zugewiesen wird mit:

this.userService = userService;

Dies widerspricht dem von mir verwendeten Codestil, bei dem alle privaten Mitglieder mit einem Präfix benannt werden, _das zu einer Zuweisung führt, die wie folgt aussehen sollte:

_userService = userService;

Wie kann ich dafür sorgen, dass VS diese Codestilregel mit seinen Verknüpfungen zur Codegenerierung befolgt?


Dies hat nichts mit Snippets zu tun. Diese Funktion wird vom Code-Analysedienst bereitgestellt. Verfügbar seit Roslyn hinzugefügt wurde. Ein führender Unterstrich ist ein Verstoß gegen die .NET Framework-Programmierrichtlinie. Auf keinen Fall werden Sie einen Microsoft-Programmierer dazu überreden, dies zu ändern. Es ist ein Stil, der von Resharper vorangetrieben wird, den sie nicht mögen, this.weil der Programmierer ihn nicht kauft, sondern ihn in Betracht zieht.
Hans Passant

18
@HansPassant Jeder moderne Code, den ich von den Microsoft-Teams gesehen habe, folgt dieser _camelCaseKonvention für private Mitglieder. Siehe die Richtlinien für den CoreFX C # -Codierungsstil , den ASP.NET Core-Codierungsstil und sogar den Rosyln-Code selbst ... ??
Kspearrin

5
@HansPassant Gute Nachrichten ... jemand hat einen Microsoft-Programmierer erfolgreich überredet, dies ändern zu können. Siehe die Antwort unten.
Kspearrin

Irgendeine Idee, wie man das in Visual Studio für Macs macht?
Jason V

Antworten:


229

Dies kann auch direkt in Visual Studio erreicht werden. Geh einfach zu Tools -> Options -> Text Editor -> C# -> Code Style -> Naming.

  1. Zunächst müssen Sie einen neuen Namensstil definieren, indem Sie auf die Schaltfläche "Namensstile verwalten" klicken:

VS2017 Dialogfeld "Namensstil"

  1. Klicken Sie dann auf das + -Zeichen, um eine neue Regel für "Privates oder internes Feld" zu definieren, die Ihren neuen Namensstil verwendet:

Dialogfeld "VS2017-Optionen"

  1. Starten Sie Visual Studio neu

  2. Wenn Sie danach das Refactoring "Feld erstellen und initialisieren" anwenden, wird es mit einem führenden Unterstrich benannt.


Ich bin in Visual Studio 15.8.8 und dies war die einzige Antwort hier, die für mich funktioniert hat.
Jonathan Taylor

25
Zu Ihrer Information: Möglicherweise müssen Sie VS danach neu starten.
Jeff

9
Funktioniert gut in VS 2019.
Matt Stannett

3
Nicht alle Helden tragen Umhänge. Tolle Erklärung. Funktioniert super! Vielen Dank.
Datum

1
In VS 2019 Version 16.5.4
Douglas HM ist

32

Die .editorconfig-Einstellungen sind kspearrins Antwort hat bei mir nicht funktioniert. Ich musste diese verwenden (für 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 = _

Ich habe diese von hier erhalten: https://github.com/dotnet/roslyn/issues/22884#issuecomment-358776444


Seltsam. Ich verwende jetzt VS 2017 15.6 und meine ursprüngliche Antwort scheint dort immer noch zu funktionieren. Wer weiß ...
Kspearrin

Ich habe auf 15.6.3 aktualisiert und diese Version funktioniert immer noch für mich. Ich verwende die Community Edition, vielleicht nicht?
michael_hook

Ich kann auch nicht zur Arbeit kommen, ich verwende VS Pro 2017 Version 15.6.4
Eric Schneider


Dieser hat bei mir funktioniert, als die akzeptierte Antwort nicht stimmte. VS Pro 15.7.5
Licht

24

Dies kann erreicht werden, indem Sie Ihre eigene Roslyn Code Analyzer-Namensregel erstellen. Fügen Sie .editorconfigIhrer Lösung ein hinzu, um benutzerdefinierte Namenskonventionen anzugeben.

Lesen Sie hier mehr darüber: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Um den gewünschten Effekt aus der Frage zu erzielen, funktioniert Folgendes:

[*.{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 = _

Ergebnis:

Geben Sie hier die Bildbeschreibung ein


Dies scheint mir der lange Weg zu sein, um diese Aufgabe zu erfüllen. Bitte lesen Sie die Antwort von @Maciek.
Eric

Dies war der einzige Weg zurück, als ich ursprünglich antwortete. Sieht so aus, als hätten sie jetzt eine Benutzeroberfläche hinzugefügt.
Kspearrin

1
Das Bearbeiten von .editorconfig ist eine viel schönere Lösung als das Bearbeiten über die Benutzeroberfläche.
Gliljas

@ Eric Es ist umgekehrt. Es ist definitiv viel länger, langwieriger und fehleranfälliger , jedem Mitglied Ihres Teams anzuweisen, seinen VS auf eine bestimmte Weise von Hand zu konfigurieren , als eine .editorconfigDatei in Git einzuchecken und zu wissen, dass von diesem Moment an alle Einstellungen automatisch angepasst werden, um zu folgen den Codierungsstil des Projekts.
Daniel Liuzzi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.