Visual Studio C # स्टेटमेंट टकराना


180

जब वास्तव में लंबे कोड ब्लॉक का संपादन किया जाता है (जो निश्चित रूप से वैसे भी रिफलेक्ट किया जाना चाहिए, लेकिन यह इस प्रश्न के दायरे से परे है), मैं अक्सर स्टेट ब्लॉक को तोड़ने की क्षमता के लिए लंबे समय तक एक जैसे फ़ंक्शन ब्लॉक को ध्वस्त कर सकता हूं। यह कहना है, यह बहुत अच्छा होगा यदि ब्रेसिज़ में संलग्न सब कुछ के लिए कोड की रूपरेखा पर माइनस आइकन दिखाई दिया। यह फ़ंक्शंस, क्लासेस, रीजन, नेमस्पेस, यूज़िंग के लिए प्रतीत होता है, लेकिन सशर्त या पुनरावृत्त ब्लॉकों के लिए नहीं। यह बहुत अच्छा होगा यदि मैं इफ़्स, स्विच, फ़ॉरचेज़, उस तरह की चीजों को ढहा सकता हूं!

उस में थोड़ा सा जाना, मुझे पता चला कि जाहिरा तौर पर वी में रूपरेखा सी + + यह अनुमति देता है लेकिन वीएस में सी # आउटलाइनिंग नहीं करता है। मैं वास्तव में क्यों नहीं मिलता। यहां तक ​​कि अगर मैं सी # फॉर्मेटिंग का चयन करता हूं, तो भी नोटपैड ++ ये पतन होगा, इसलिए मुझे नहीं मिलता कि विज़ुअल स्टूडियो क्यों नहीं।

क्या कोई VS2008 ऐड-इन के बारे में जानता है जो इस व्यवहार को सक्षम करेगा? या इसके लिए किसी तरह की छिपी हुई सेटिंग?

जोड़ने के लिए संपादित: सम्मिलित क्षेत्र निश्चित रूप से एक विकल्प है और यह मेरे लिए पहले से ही था, लेकिन काफी स्पष्ट रूप से, मुझे उस क्षेत्र में चीजों को लपेटना नहीं चाहिए जो पहले से ही ब्रेसिज़ में लिपटे हुए हैं ... अगर मैं इसे संपादित करने जा रहा था मौजूदा कोड, मैं अभी भी इसे बेहतर तरीके से चिंता से अलग करने के लिए रिफ्लेक्टर करूंगा। ("रैपिंग" क्षेत्रों के बजाय नए तरीकों के साथ;)


6
BTW: मैंने पाया कि इन दो शॉर्टकट ने मेरे जीवन को बहुत आसान बना दिया: टॉगल रूपरेखा: Ctrl + M, M संक्षिप्त सभी: Ctrl + M, O
गौरव

2
Ctrl + M, L एक पुनरावर्ती पतन / विस्तार को बढ़ाता है। बेशक, यह आपको एक ही लाइन के साथ छोड़ सकता है। हालांकि, उस लाइन के अंदर, (Ctrl + M, M) आपको अच्छी तरह से सारांशित फ़ाइल के साथ छोड़ देता है।
पेट्रिज

2
यहाँ वी.एस. 2012 के लिए एक समान प्लगइन है: stackoverflow.com/questions/18388280/…
झलक

संबंधित: जेफ एटवुड, 2008 द्वारा कोड फोल्डिंग के साथ समस्या
निक एलेक्सीव

जवाबों:


267

विजुअल स्टूडियो 2017 से शुरू होकर, स्टेटमेंट कॉलिंग अंतर्निहित है।

कई एक्सटेंशन हैं जो वीएस के पूर्व 2017 संस्करणों के लिए इस कार्य को करते हैं, जो वीएस 2010 संस्करण के साथ शुरू होता है:

अंतिम एक्सटेंशन केवल वीएस 2015 और वीएस 2017 का समर्थन करता है, लेकिन यह सबसे शक्तिशाली है।
यह ढह गए ब्लॉकों के अंदर सिंटैक्स रंग का समर्थन करता है, यह अधिक दोष-सहिष्णु और अनुकूलित है।

यदि आप इसे डाउनलोड करने के लिए किसी ब्राउज़र का उपयोग करने के बाद एक्सटेंशन को इंस्टॉल नहीं करते हैं, तो अंतर्निहित Visual Studio एक्सटेंशन प्रबंधक का उपयोग करने का प्रयास करें।


यह बहुत अच्छा है, मैं इतने लंबे समय से कुछ इस तरह की तलाश कर रहा था। असली जवाब होना चाहिए! (लेकिन केवल अगर आप VS2010 गैर-एक्सप्रेस संस्करण का उपयोग करते हैं, तो मुझे लगता है ...)
रिको

यह विस्तार बहुत अच्छा है लेकिन इसके हैंडलर (.ashx) पर काम नहीं कर रहा है
Jemsworld


3
तथ्य यह है कि हम भी दृश्य स्टूडियो के लिए इस प्लगइन की जरूरत है मन boggling है। यह मानक व्यवहार होना चाहिए। अच्छाई।
रयान रोडेमॉयर

@Odys, स्थापना रद्द करें और फिर Ctrl M + O समस्या को ठीक करने के लिए एक्सटेंशन को फिर से स्थापित करें।
शाहेदुर रहमान

21

मुझे ऐड-इन की जानकारी नहीं है, लेकिन आपने क्षेत्रों का उल्लेख किया है और मुझे ऐसा कुछ करने में कुछ भी गलत नहीं दिखता ...

foreach (Item i in Items)
{
  #region something big happening here
  ...
  #endregion

  #region something big happening here too
  ...
  #endregion

  #region something big happening here also
  ...
  #endregion
}

EDIT: प्रश्न के EDIT के जवाब में: आप सही कह रहे हैं, हर जगह क्षेत्रों का एक गुच्छा चिपका देना आदर्श नहीं है और संभवत: रिफैक्टरिंग का रास्ता तय करना है। लेकिन ऐसा लगता है कि आप कुछ जादुई की तलाश कर रहे हैं जो आपके लिए कोड को "व्यवस्थित" करेगा, और मुझे नहीं लगता कि यह मौजूद है।


IIRC, आप एक फ़ंक्शन के भीतर क्षेत्रों को परिभाषित नहीं कर सकते।
जोएल कोएहॉर्न 21

10
उसका कोड सही है; आप सीमित नहीं हैं जहाँ आप इस तरह के क्षेत्रों को परिभाषित कर सकते हैं (जब तक आप शुरुआत के दायरे से बाहर समाप्त नहीं होते हैं)
जॉन

3
कृपया मूल प्रश्न का संपादन देखें; डेवलपर की ओर से मैनुअल कार्रवाई की आवश्यकता है (यहां तक ​​कि एक-या-दो-क्लिक क्षेत्र-लपेटकर शॉर्टकट का उपयोग करना) वास्तव में इस सवाल का जवाब नहीं देता है कि इसके लिए स्वचालित रूप से काम करने की इच्छा / इच्छा है
Gran

1
@ जोएल का मानना ​​है कि आप
ब्रायन एंडरसन

आपके द्वारा इस थ्रेड में लिंक किए गए सभी प्लगइन्स क्षेत्रों का उपयोग करने से बेहतर हैं। रात और दिन।
झलक

19

आप दृश्य स्टूडियो के भीतर पाठ के विशिष्ट ब्लॉक को ध्वस्त कर सकते हैं, लेकिन आपको स्वचालित रूपरेखा को बंद करना होगा।

अपनी कोड विंडो में राइट क्लिक करें और चुनें (Outlining | Stop Outlining)

फिर, कुछ पाठ का चयन करें, राइट क्लिक करें और चयन करें (आउटलाइनिंग | छिपा चयन)

जब आप फिर से स्वचालित रूपरेखा चालू करते हैं, तो आपका कस्टम "रीजन" अब ढह नहीं सकता।


3
काफी उचित। मैं इस सवाल के माध्यम से इन ब्लॉक को स्वचालित रूपरेखा में जोड़ने का एक तरीका खोजने की उम्मीद कर रहा हूं, क्योंकि यह वास्तव में उनके लिए नहीं होने का कोई मतलब नहीं है।
ग्रांक नोव

1
मैट, आप इसे (वीएस 2012 में) स्वत: आउटलाइनिंग को रोकने के बिना कर सकते हैं। बस पाठ का चयन करें, और रूपरेखा> चयन को छुपायें
nawfal

3

जब तक आप उन्हें एक ही कोड पदानुक्रमित स्तर पर रखते हैं, तब तक Visual Studio 2008 फ़ंक्शन के अंदर के क्षेत्रों का समर्थन करता है

#region Won't work
for(int i = 0; i<Count; i++)
{
//do something
#endregion
}

for(int i=0; i<Count; i++)
{
#region Works fine
//do lots of stuff
#endregion
}

5
यह 2008 में नया नहीं है। 2005 भी इसका समर्थन करता है।
कोन

3

मुझे कुछ अलग कहने दें: प्रेस करें (ctrl+m,ctrl+h)या संपादित करें> आउटलाइनिंग> चयन को अपने इतने उपयोगी छिपाएं।


1
@ मेहदी सवाल उस टूल के बारे में था जो कोड के ब्लॉक को ध्वस्त कर देगा। आप कुछ संयोजन पर क्लिक करते हैं और आपके आईओएस के लिए, / जबकि छोरों, आदि सभी ध्वस्त हो जाते हैं ताकि आप अपने कोड को उच्चतम स्तर में पढ़ सकें। फिर आप कोड में गहराई से जाएंगे। आपका समाधान व्यवहार्य नहीं है क्योंकि आपको पहले सभी क्षेत्रों को ध्वस्त करना होगा और आपको यह नहीं दिखाई देगा कि वास्तव में कौन सा क्षेत्र है। भविष्य में आपका भाग्य साथ दे।
रोमन

1
आप पहले कुछ टिप्पणी कर सकते हैं और फिर इसके नीचे छिपा सकते हैं, इसलिए यह अधिक आसान और लचीला है
M

2

इस फीचर को विज़ुअल स्टूडियो 2010 के C # एडिटर में जोड़ा गया है। मैं स्रोत की पुष्टि नहीं कर सकता कि यह वास्तव में डाला गया था, लेकिन मुझे याद है कि यह देव 10 टीम के सदस्य ब्लॉगों में से एक बीटा 1 या कुछ के बाद से बदलाव के बारे में बात कर रहा है। सांत्वना के रूप में, यहां एक Microsoft टिप्पणी है जो यह सुझाव देती है कि वे इसे जोड़ना चाहते थे।


0

मैं यहां यह जोड़ूंगा कि वीएस 2010 में माइक्रोसॉफ्ट ने प्रबंधित एक्सटेंडबिलिटी फ्रेमवर्क (एमईएफ) का उपयोग करके डब्ल्यूपीएफ एडोर्नर क्षमताओं को जोड़ा है, यह हमें स्रोत कोड एडिटर को विस्तारित करने के लिए इसे और अधिक पठनीय और सुलभ बनाने के लिए बेहतर तरीके से व्यवस्थित करने की अनुमति देगा।

उदाहरण के लिए सारांश टिप्पणियाँ विज़ुअलाइज़र जो स्कॉट गु ने पीडीसी 2008 में प्रदर्शित किया था

तो डेवलपर्स के लिए बेहतर कल की प्रतीक्षा करें :)


0

कोडरश आपके लिए सभी कोड ब्लॉक की रूपरेखा तैयार करेगा। सुनिश्चित नहीं है कि यह आपको ब्लॉकों का विस्तार / पतन करने की अनुमति देता है, लेकिन रूपरेखा सबसे अच्छी बात है। मैं कोडरश के बजाय रीशैपर का उपयोग करता हूं, जहां तक ​​मुझे पता है कि ब्लॉक कोलैप्सिंग प्रदान नहीं करता है :(


0

मैंने इसे विजुअल स्टूडियो 2013 के लिए पाया है और इसे बहुत मददगार पाया है। यह काम करता है भले ही आप {@} के साथ अपने कोड के आसपास सरल ब्रेसिज़ रखें

साझा करने के बाद मैंने पाया कि किसी और ने भी इस लिंक का उल्लेख किया है। मेरा वोट इस टूल के लिए भी है।

दृश्य स्टूडियो 2013 के लिए सी # आउटलाइनिंग टूल


0

VS2017 में आप कोड के एक हिस्से को हाइलाइट कर सकते हैं, राइट-क्लिक, आउटलाइनिंग> छिपाएं चयन। यह कोड ढह जाएगा और हाइलाइट किए गए अनुभाग को टॉगल प्रदान करेगा।


-2

# क्षेत्र, # सीमा स्मार्ट विकल्प है।


10
स्टाइलकॉप नियम SA1123: DoNotPlaceRegionsWithinElements: इस नियम का उल्लंघन तब होता है जब भी किसी क्षेत्र को एक कोड तत्व के शरीर के भीतर रखा जाता है। विज़ुअल स्टूडियो सहित कई संपादकों में, इस क्षेत्र के भीतर कोड छिपाकर, डिफ़ॉल्ट रूप से क्षेत्र ढह जाएगा। आमतौर पर एक तत्व के शरीर के भीतर कोड को छिपाने के लिए यह एक बुरा अभ्यास है, क्योंकि इससे बुरे फैसले हो सकते हैं क्योंकि समय के साथ कोड बनाए रखा जाता है।
सैम हरवेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.