मैं निर्माणकर्ताओं के लिए विजुअल स्टूडियो के निजी क्षेत्र पीढ़ी शॉर्टकट को कैसे अनुकूलित करूं?


120

वीएस 2017 (और शायद पुराने संस्करण) मुझे एक private readonlyक्षेत्र उत्पन्न करने और इसे असाइन करने के लिए इस आसान छोटे निर्माता शॉर्टकट देता है।

स्क्रीनशॉट:

यहां छवि विवरण दर्ज करें

यह कहा जाता है एक निजी सदस्य उत्पन्न करने के लिए समाप्त होता है userServiceऔर फिर इसके साथ काम करता है:

this.userService = userService;

यह उस कोड शैली के खिलाफ जाता है जिसका मैं उपयोग करता हूं जो कि उपसर्ग के साथ सभी निजी सदस्यों के नाम के लिए है _जिसके परिणामस्वरूप असाइनमेंट इस तरह दिखना चाहिए:

_userService = userService;

मैं इसे कैसे बना सकता हूं ताकि वीएस अपनी कोड पीढ़ी के शॉर्टकट के साथ इस कोड शैली नियम का पालन करे?


इसका स्निपेट्स से कोई लेना-देना नहीं है, यह सुविधा कोड विश्लेषण सेवा द्वारा प्रदान की जाती है। उपलब्ध जब से Roslyn गयी थी। एक प्रमुख अंडरस्कोर .NET फ्रेमवर्क प्रोग्रामिंग गाइडलाइन का उल्लंघन है, जिस तरह से आप इसे बदलने में Microsoft प्रोग्रामर से बात करने जा रहे हैं। यह एक शैली है जिसे रेसर्पर ने धकेल दिया है, उन्हें यह पसंद नहीं है this.क्योंकि प्रोग्रामर इसे नहीं खरीदते हैं, इसका उपयोग करने पर विचार करें।
हंस पसंत

18
@HansPassant Microsoft पर टीमों द्वारा निर्मित आधुनिक कोड का हर टुकड़ा _camelCaseनिजी सदस्यों के लिए इस सम्मेलन का पालन करता है । देखें CoreFX सी शैली दिशानिर्देश कोडिंग # , ASP.NET कोर शैली कोडिंग और यहां तक कि Rosyln कोड में ही ... ??
kspearrin

5
@HansPassant अच्छी खबर ... किसी ने इसे बदलने में सक्षम होने में Microsoft प्रोग्रामर से सफलतापूर्वक बात की। नीचे उत्तर देखें।
kspearrin

किसी भी विचार कैसे मैक के लिए विजुअल स्टूडियो में ऐसा करने के लिए?
जेसन वी

जवाबों:


229

इसे सीधे विजुअल स्टूडियो में भी प्राप्त किया जा सकता है। बस जाना है Tools -> Options -> Text Editor -> C# -> Code Style -> Naming

  1. सबसे पहले आपको "नामकरण शैलियों को प्रबंधित करें" बटन पर क्लिक करके एक नई नामकरण शैली को परिभाषित करने की आवश्यकता है:

VS2017 नामकरण शैली संवाद

  1. फिर "निजी या आंतरिक फ़ील्ड" के लिए एक नए नियम को परिभाषित करने के लिए + चिह्न पर क्लिक करें, जो आपकी नई नामकरण शैली का उपयोग करता है:

VS2017 विकल्प संवाद

  1. Visual Studio को पुनरारंभ करें

  2. उसके बाद, जब आप "फ़ील्ड बनाएँ और प्रारंभ करें" को फिर से लागू करते हैं, तो इसे एक प्रमुख अंडरस्कोर के साथ नाम दिया जाएगा।


मैं विजुअल स्टूडियो 15.8.8 पर हूं और यहां केवल यही एक उत्तर था जिसने मेरे लिए काम किया।
जोनाथन टेलर

25
FYI करें: आपको इसके बाद VS को पुनरारंभ करना पड़ सकता है।
जेफ

9
वीएस 2019 में अच्छी तरह से काम करता है।
मैट स्टेनेट

3
सभी हीरोज टोपी नहीं पहनते हैं। महान व्याख्या। बहुत अच्छा काम करता है! धन्यवाद।
डेटोमल

1
वीएस 2019 संस्करण 16.5.4 में आवश्यक कोई पुनरारंभ नहीं
डगलस एचएम

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-35-3576444


अजीब। मैं अब वीएस 2017 15.6 का उपयोग कर रहा हूं और मेरा मूल उत्तर अभी भी वहां काम करना है। कौन जानता है ...
kspearrin

मैंने 15.6.3 को अद्यतन किया और यह संस्करण मेरे लिए काम करता है। मैं सामुदायिक संस्करण का उपयोग कर रहा हूं, शायद आप नहीं हैं?
michael_hook

मैं या तो काम नहीं कर सकता, मैं वीएस प्रो 2017 संस्करण 15.6.4 का उपयोग कर रहा हूं
एरिक श्नाइडर


यह मेरे लिए तब काम आया जब स्वीकृत उत्तर नहीं मिला। बनाम प्रो 15.7.5
लिच

24

यह अपना रोसलिन कोड एनालाइजर नामकरण नियम बनाकर प्राप्त किया जा सकता है। .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 जोड़ा है।
22

1
एडिटिंग .editorconfig UI के माध्यम से करने की तुलना में बहुत अच्छा समाधान है।
gliljas

@ एरिक यह दूसरा तरीका है। अपनी टीम के प्रत्येक सदस्य को अपने वी.एस. को हाथ से कॉन्फ़िगर करने का एक निश्चित तरीका बताने के लिए निश्चित रूप से बहुत लंबा, थकाऊ और त्रुटि वाला है, जो एक .editorconfigफाइल में गीट में जाँचने की तुलना में है और यह जानना कि उस क्षण से सभी को अपनी सेटिंग्स का पालन करने के लिए स्वचालित रूप से समायोजित किया जाएगा। परियोजना की कोडिंग शैली।
डैनियल लियुज़ी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.