Oluşturucular için Visual Studio'nun özel alan oluşturma kısayolunu nasıl özelleştirebilirim?


120

VS 2017 (ve belki eski sürümler) bana bir private readonlyalan oluşturmak ve atamak için bu kullanışlı küçük kurucu kısayolunu veriyor .

Ekran görüntüsü:

görüntü açıklamasını buraya girin

Bu, çağrılan özel bir üye oluşturur userServiceve ardından şu şekilde atar:

this.userService = userService;

Bu, kullandığım kod stiline aykırıdır; bu, tüm özel üyeleri, aşağıdaki _gibi görünmesi gereken atamayla sonuçlanan bir ön ekle adlandırmaktır:

_userService = userService;

VS'nin kod oluşturma kısayollarıyla bu kod stili kuralına uyması için bunu nasıl yapabilirim?


Bunun parçacıklarla ilgisi yoktur, bu özellik kod analiz hizmeti tarafından sağlanır. Roslyn eklendiğinden beri kullanılabilir. Önde gelen bir alt çizgi, .NET Framework Programlama Kılavuzu'nun ihlalidir, bir Microsoft programcısından bunu değiştirmesi için konuşmanız mümkün değildir. Resharper tarafından zorlanan bir stildir, sevmezler this.çünkü bu, programcının onu satın almamasına neden olur, kullanmayı düşünün.
Hans Passant

18
@HansPassant Microsoft'taki ekiplerin ürettiğini gördüğüm her modern kod parçası, _camelCaseözel üyeler için bu kurala uyuyor . Bkz Stil Kodlama Rehberleri Corefx C # , Stil Kodlama ASP.NET Çekirdek ve hatta Rosyln kodun kendisini ... ??
kspearrin

5
@HansPassant İyi haber ... birisi bunu değiştirebilmek için bir Microsoft programcısını başarıyla konuştu. Aşağıdaki cevaba bakın.
kspearrin

Mac'ler için Visual Studio'da bunu nasıl yapacağınız hakkında bir fikriniz var mı?
Jason V

Yanıtlar:


230

Bu, doğrudan Visual Studio'da da gerçekleştirilebilir. Sadece gidin Tools -> Options -> Text Editor -> C# -> Code Style -> Naming.

  1. Öncelikle, "Adlandırma stillerini yönet" düğmesini tıklayarak yeni bir adlandırma stili tanımlamanız gerekir:

VS2017 Adlandırma stili iletişim kutusu

  1. Ardından, yeni adlandırma stilinizi kullanan "Özel veya Dahili Alan" için yeni bir kural tanımlamak üzere + işaretini tıklayın:

VS2017 Seçenekler iletişim kutusu

  1. Visual Studio'yu yeniden başlatın

  2. Bundan sonra, "Alanı oluştur ve başlat" yeniden düzenlemeyi uyguladığınızda, baştaki bir alt çizgi ile adlandırılacaktır.


Visual Studio 15.8.8 kullanıyorum ve buradaki benim için çalışan tek cevap buydu.
Jonathan Taylor

25
Bilginize: Bundan sonra VS'yi yeniden başlatmanız gerekebilir.
Jeff

9
VS 2019'da iyi çalışıyor.
Matt Stannett

3
Her kahraman pelerin giymez. Harika açıklama. Harika çalışıyor! Teşekkürler.
datoml

1
VS 2019 Sürüm 16.5.4'te yeniden başlatma gerekmez
Douglas HM

32

.Editorconfig ayarları kspearrin'in cevabı benim için işe yaramadı. Bunları kullanmak zorunda kaldım (VS2017 Sürüm 15.4.0 için):

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

Bunları buradan aldım: https://github.com/dotnet/roslyn/issues/22884#issuecomment-358776444


Tuhaf. Şimdi VS 2017 15.6 kullanıyorum ve orijinal cevabım hala orada çalışıyor gibi görünüyor. Kim bilir ...
kspearrin

15.6.3'e güncelledim ve bu sürüm hala benim için çalışıyor. Topluluk sürümünü kullanıyorum, belki kullanmıyorsun?
michael_hook

İkisini de çalışamıyorum, VS Pro 2017 sürüm 15.6.4 kullanıyorum
Eric Schneider

1
bunu da takip ederek
Eric Schneider

Bu, kabul edilen cevap olmadığında benim için çalıştı. VS Pro 15.7.5
Licht

24

Bu, kendi Roslyn Code Analyzer adlandırma kuralınızı oluşturarak gerçekleştirilebilir. .editorconfigÖzel adlandırma kurallarını belirtmek için çözümünüze bir ekleyin .

Burada onlar hakkında daha fazla bilgi edinin: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Sorudan istenen etkiyi elde etmek için aşağıdakiler işe yarayacaktır:

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

Sonuç:

görüntü açıklamasını buraya girin


Bu, bana bu görevi başarmanın uzun yolu gibi görünüyor. Lütfen @Maciek'in yanıtına bakın.
Eric

İlk cevapladığımda geri dönmenin tek yolu buydu. Görünüşe göre bunun için bir kullanıcı arayüzü eklediler.
kspearrin

1
.Editorconfig'i düzenlemek, kullanıcı arayüzü aracılığıyla yapmaktan çok daha güzel bir çözümdür.
gliljas

@Eric Bu tam tersi. Ekibinizin her üyesine VS'lerini elle belirli bir şekilde yapılandırmalarını söylemek zorunda olmak , kesinlikle Git'te bir .editorconfigdosyayı kontrol etmekten ve o andan itibaren herkesin ayarlarının takip edilecek şekilde otomatik olarak ayarlanacağını
Daniel Liuzzi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.