Bagaimana cara menyesuaikan pintasan pembuatan bidang pribadi Visual Studio untuk konstruktor?

120

VS 2017 (dan mungkin versi yang lebih lama) memberi saya pintasan konstruktor kecil yang berguna ini untuk menghasilkan private readonlybidang dan menetapkannya.

Tangkapan layar:

masukkan deskripsi gambar di sini

Ini akhirnya menghasilkan anggota pribadi yang dipanggil userServicedan kemudian menugaskannya dengan:

this.userService = userService;

Ini bertentangan dengan gaya kode yang saya gunakan yaitu memberi nama semua anggota privat dengan awalan yang _menghasilkan tugas yang akan terlihat seperti:

_userService = userService;

Bagaimana cara membuatnya sehingga VS mematuhi aturan gaya kode ini dengan pintasan pembuatan kodenya?

kspearrin.dll
sumber
Ini tidak ada hubungannya dengan cuplikan, fitur ini disediakan oleh layanan analisis kode. Tersedia sejak Roslyn ditambahkan. Garis bawah di depan adalah pelanggaran terhadap .NET Framework Programming Guideline, tidak mungkin Anda akan membujuk programmer Microsoft untuk mengubahnya. Ini adalah gaya yang didorong oleh Resharper, mereka tidak suka this.karena itu membuat programmer tidak membelinya, pertimbangkan untuk menggunakannya.
Hans Passant
18
@HansPassant Setiap bagian dari kode modern yang saya lihat dihasilkan oleh tim di Microsoft mengikuti _camelCasekonvensi ini untuk anggota pribadi. Lihat Panduan Gaya Pengkodean CoreFX C # , Gaya Pengkodean Inti ASP.NET , dan bahkan kode Rosyln itu sendiri ... ??
kspearrin
5
@HansPassant Kabar baik ... seseorang berhasil membujuk programmer Microsoft agar dapat mengubah ini. Lihat jawabannya di bawah.
kspearrin
Ada ide bagaimana melakukan ini di Visual Studio untuk Mac?
Jason V

Jawaban:

231

Ini juga dapat dicapai secara langsung di Visual Studio. Pergi saja ke Tools -> Options -> Text Editor -> C# -> Code Style -> Naming.

  1. Pertama, Anda perlu menentukan gaya penamaan baru dengan mengklik tombol "Kelola gaya penamaan":

VS2017 Dialog gaya penamaan

  1. Lalu klik tanda + guna menentukan aturan baru untuk "Bidang Pribadi atau Internal", yang menggunakan gaya penamaan baru Anda:

VS2017 Opsi dialog

  1. Mulai ulang Visual Studio

  2. Setelah itu, saat Anda menerapkan pemfaktoran ulang "Buat dan inisialisasi bidang", ini akan dinamai dengan garis bawah di depan.

Maciek
sumber
Saya menggunakan Visual Studio 15.8.8 dan ini adalah satu-satunya jawaban di sini yang berhasil untuk saya.
Jonathan Taylor
25
FYI: Anda mungkin harus memulai ulang VS setelah ini.
Jeff
9
Bekerja dengan baik di VS 2019.
Matt Stannett
3
Tidak semua pahlawan memakai jubah. Penjelasan yang bagus. Bekerja dengan baik! Terima kasih.
datoml
1
Tidak diperlukan restart dalam VS 2019 Versi 16.5.4
Douglas HM
32

Pengaturan .editorconfig adalah jawaban kspearrin tidak berfungsi untuk saya, saya harus menggunakan ini (untuk VS2017 Versi 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 = _

Saya mendapatkannya dari sini: https://github.com/dotnet/roslyn/issues/22884#issuecomment-358776444

michael_hook
sumber
Aneh. Saya sekarang menggunakan VS 2017 15.6 dan jawaban asli saya sepertinya masih berfungsi di sana. Siapa tahu ...
kspearrin
Saya memperbarui ke 15.6.3 dan versi ini masih berfungsi untuk saya. Saya menggunakan edisi Komunitas, mungkin Anda tidak?
michael_hook
Saya tidak bisa bekerja, saya menggunakan VS Pro 2017 versi 15.6.4
Eric Schneider
1
mengikuti ini juga: docs.microsoft.com/en-us/visualstudio/ide/…
Eric Schneider
Yang ini berhasil untuk saya ketika jawaban yang diterima tidak. VS Pro 15.7.5
Licht
24

Ini dapat dicapai dengan membuat aturan penamaan Roslyn Code Analyzer Anda sendiri. Tambahkan .editorconfigdalam solusi Anda untuk menentukan konvensi penamaan kustom.

Baca lebih lanjut tentang mereka di sini: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Untuk mendapatkan efek yang diinginkan dari pertanyaan, berikut ini akan bekerja:

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

Hasil:

masukkan deskripsi gambar di sini

kspearrin.dll
sumber
Menurut saya, ini jalan yang panjang untuk menyelesaikan tugas ini. Silakan lihat tanggapan @Maciek.
Eric
Ini adalah satu-satunya jalan kembali ketika saya awalnya menjawab. Sepertinya mereka menambahkan UI untuk itu sekarang.
kspearrin
1
Mengedit .editorconfig adalah solusi yang jauh lebih baik daripada melakukannya melalui UI.
gliljas
@Eric Itu sebaliknya. Harus memberi tahu setiap anggota tim Anda untuk mengonfigurasi VS mereka dengan cara tertentu secara manual jelas lebih lama, membosankan, dan rawan kesalahan daripada memeriksa .editorconfigfile di Git dan mengetahui bahwa sejak saat itu setiap orang akan memiliki pengaturan secara otomatis disesuaikan untuk diikuti gaya pengkodean proyek.
Daniel Liuzzi