Visual Studioのコンストラクター用のプライベートフィールド生成ショートカットをカスタマイズするにはどうすればよいですか?


120

VS 2017(およびおそらく古いバージョン)では、private readonlyフィールドを生成して割り当てるための、この便利な小さなコンストラクターショートカットを利用できます。

スクリーンショット:

ここに画像の説明を入力してください

これにより、呼び出されるプライベートメンバーが生成されuserService、次のように割り当てられます。

this.userService = userService;

これは、私が使用するコードスタイルに反します。つまり、すべてのプライベートメンバーにプレフィックスを付けて、次の_ような割り当てを行います。

_userService = userService;

コード生成のショートカットでVSがこのコードスタイルルールに従うようにするにはどうすればよいですか?


これはスニペットとは何の関係もありません。この機能はコード分析サービスによって提供されます。Roslynが追加されてから使用可能です。先頭のアンダースコアは.NET Frameworkプログラミングガイドラインの違反です。Microsoftプログラマーにこれを変更するように指示することはできません。それはResharperによってプッシュされたスタイルです、それはthis.プログラマーがそれを購入しないのでそれを好まないので、それを使うことを検討してください。
ハンスパッサント2017

18
@HansPassant Microsoftのチームによって生成されたすべての最新コードは_camelCase、プライベートメンバー向けにこの規則に従っています。CoreFX C#コーディングスタイルガイドラインASP.NETコアコーディングスタイル、さらにはRosylnコード自体を参照してください... ??
kspearrin

5
@HansPassant良いニュース...誰かがMicrosoftプログラマーにこれを変更できるように成功裏に話しました。以下の答えを見てください。
kspearrin 2017

Mac用Visual Studioでこれを行う方法はありますか?
Jason 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
参考:この後、VSを再起動する必要がある場合があります。
ジェフ

9
VS 2019でうまく機能
マットStannett

3
すべての英雄はマントを着用していません。素晴らしい説明。よく働く!どうも。
datoml

1
VS 2019バージョン16.5.4では再起動は不要
ダグラス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/issues/22884#issuecomment-358776444


変だ。私は現在VS 2017 15.6を使用していますが、私の元の答えはまだそこで機能しているようです。誰が知っていますか
kspearrin

15.6.3に更新しましたが、このバージョンでも問題なく動作します。私はコミュニティエディションを使用していますが、おそらく使用していませんか?
michael_hook 2018年

どちらも動作しません。VSPro 2017バージョン15.6.4を使用しています
Eric Sc​​hneider


受け入れられた答えがうまくいかなかったとき、これは私のために働きました。VS Pro 15.7.5
Licht

24

これは、独自のRoslynコードアナライザーの命名規則を作成することで実現できます。.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の応答をご覧ください。
エリック

私が最初に答えたとき、これは唯一の帰り道でした。彼らは今それのためにUIを追加したように見えます。
kspearrin

1
.editorconfigの編集は、UIを介して行うよりもはるかに優れたソリューションです。
gliljas

@エリックそれは逆です。チームのすべてのメンバーに特定の方法でVS を手動で構成するように指示することは.editorconfig、Gitでファイルをチェックインし、その瞬間から全員が自動的に設定をフォローするようになる
Daniel Liuzzi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.