Visual Studio C # งบยุบ


180

เมื่อทำการแก้ไขบล็อคโค้ดที่มีความยาวมาก ๆ (ซึ่งแน่นอนว่าควรจะถูกนำกลับมาใช้ใหม่ แต่นั่นก็ไม่ได้อยู่ในขอบเขตของคำถามนี้) ฉันมักจะต้องใช้ความสามารถในการยุบบล็อกคำสั่งอย่างใดอย่างหนึ่ง กล่าวคือจะเป็นการดีถ้าไอคอนเครื่องหมายลบปรากฏบนโครงร่างโค้ดของทุกสิ่งที่อยู่ในเครื่องหมายปีกกา ดูเหมือนว่าจะปรากฏขึ้นสำหรับฟังก์ชั่น, คลาส, ภูมิภาค, เนมสเปซ, การใช้งาน แต่ไม่ใช่สำหรับบล็อกแบบมีเงื่อนไขหรือซ้ำ มันจะยอดเยี่ยมถ้าฉันสามารถยุบสิ่งต่าง ๆ เช่น ifs สวิตช์ foreaches สิ่งนั้น

Googling เป็นบิตฉันพบว่าการสรุป C ++ ใน VS ช่วยให้ทำได้ แต่ C # การสรุปใน VS ไม่ได้ ฉันไม่เข้าใจว่าทำไม แม้ notepad ++ จะยุบดังนั้นถ้าฉันเลือกการจัดรูปแบบ C # ดังนั้นฉันไม่เข้าใจว่าทำไม Visual Studio ไม่

ไม่มีใครรู้เกี่ยวกับ Add-in VS2008 ที่จะเปิดใช้งานลักษณะการทำงานนี้หรือไม่ หรือการตั้งค่าแบบซ่อนเร้นสำหรับมัน

แก้ไขเพื่อเพิ่ม: การแทรกเขตเป็นตัวเลือกแน่นอนและมันก็เกิดขึ้นกับฉันแล้ว แต่ค่อนข้างตรงไปตรงมาฉันไม่ควรห่อสิ่งต่าง ๆ ในพื้นที่ที่ถูกห่อด้วยวงเล็บปีกกา ... ถ้าฉันจะแก้ไข รหัสที่มีอยู่ฉันจะ refactor ให้แยกความกังวลได้ดีกว่าอยู่ดี ("การล้อม" ด้วยวิธีการใหม่แทนภูมิภาค;)


6
BTW: ฉันพบว่าทางลัดทั้งสองนี้ทำให้ชีวิตของฉันง่ายขึ้น: สลับโครงร่าง: Ctrl + M, M ยุบทั้งหมด: Ctrl + M, O
Gaurav

2
Ctrl + M, L สลับการยุบ / ขยายแบบเรียกซ้ำ แน่นอนว่าสิ่งนี้จะทำให้คุณมีบรรทัดเดียว ภายในบรรทัดนั้น (Ctrl + M, M) ทำให้คุณมีไฟล์สรุปที่ดี
patridge

2
นี่คือปลั๊กอินเทียบเท่า VS 2012: stackoverflow.com/questions/18388280/...
เหลือบ

เกี่ยวข้อง: ปัญหาการพับโค้ดโดย Jeff Atwood, 2008
Nick Alexeev

คำตอบ:


267

การเริ่มต้นด้วย Visual Studio 2017 การยุบคำสั่งมีอยู่แล้วภายใน

มีส่วนขยายหลายอย่างที่ทำงานนี้สำหรับ VS รุ่นก่อนปี 2017 เริ่มต้นด้วยรุ่น VS 2010:

นามสกุลสุดท้ายรองรับเฉพาะ VS 2015 และ VS 2017 แต่เป็นนามสกุลที่ทรงพลังที่สุด
รองรับการระบายสีซินแทกซ์ในบล็อคที่ยุบตัว

หากดูเหมือนไม่ได้ติดตั้งส่วนขยายหลังจากคุณใช้เบราว์เซอร์เพื่อดาวน์โหลดลองใช้ตัวจัดการส่วนขยายของ Visual Studio ในตัว


นี่ยอดเยี่ยมมากฉันกำลังมองหาอะไรแบบนี้มานานแล้ว ควรเป็นคำตอบที่แท้จริง! ( แต่ถ้าคุณใช้ VS2010 รุ่นที่ไม่ใช่ด่วนฉันเดา ... )
rikoe

ส่วนขยายนี้ยอดเยี่ยม แต่ไม่สามารถใช้กับตัวจัดการ (
.ashx


3
ความจริงที่ว่าเราจำเป็นต้องมีปลั๊กอินนี้สำหรับ Visual Studio ก็คือความสามารถที่เหลือเชื่อ นี่ควรเป็นพฤติกรรมมาตรฐาน ความดี
Ryan Rodemoyer

@Odys ถอนการติดตั้งแล้วติดตั้งส่วนขยายอีกครั้งเพื่อแก้ไขปัญหา Ctrl M + O
Shahedur Rahman

21

ฉันไม่ทราบเกี่ยวกับ Add-in แต่คุณพูดถึงภูมิภาคแล้วและฉันไม่เห็นอะไรผิดปกติกับการทำสิ่งนี้ ...

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
}

แก้ไข: ในการตอบสนองต่อการแก้ไขของคำถาม: คุณถูกต้อง, การรวมกลุ่มของภูมิภาคทุกที่ไม่เหมาะและการปรับโครงสร้างอาจเป็นวิธีที่จะไป แต่ดูเหมือนว่าคุณกำลังมองหาสิ่งมหัศจรรย์ที่จะ "จัดระเบียบ" รหัสสำหรับคุณและฉันไม่คิดว่ามีอยู่


IIRC คุณไม่สามารถกำหนดภูมิภาคภายในฟังก์ชันได้
Joel Coehoorn

10
รหัสของเขาถูกต้อง; คุณไม่ จำกัด ตำแหน่งที่คุณสามารถกำหนดภูมิภาคเช่นนี้ (ตราบใดที่คุณไม่ได้อยู่นอกขอบเขตของการเริ่มต้น)
John

3
โปรดดูการแก้ไขคำถามเดิม; จำเป็นต้องดำเนินการด้วยตนเองในส่วนของนักพัฒนาซอฟต์แวร์ (แม้จะใช้ทางลัดในการตัดพื้นที่แบบคลิกครั้งเดียวหรือสองครั้ง) ก็ไม่ได้ตอบคำถาม / ความปรารถนาที่จะทำสิ่งนี้โดยอัตโนมัติ
Grank

1
@Joel ฉันเชื่อว่าคุณกำลังนึกถึง VB.NET
Bryan Anderson

ปลั๊กอินทั้งหมดที่คุณพบว่าเชื่อมโยงในเธรดนี้ดีกว่าการใช้พื้นที่ กลางคืนและกลางวัน.
เหลือบ

19

คุณสามารถยุบบล็อกข้อความเฉพาะภายใน Visual Studio ได้ แต่คุณต้องปิดการจัดเค้าร่างอัตโนมัติ

คลิกขวาในหน้าต่างรหัสของคุณแล้วเลือก (เค้าร่าง | หยุดเค้าร่าง)

จากนั้นเลือกข้อความคลิกขวาแล้วเลือก (เค้าร่าง | ซ่อนส่วนที่เลือก)

เมื่อคุณเปิดการจัดเค้าร่างอัตโนมัติอีกครั้ง "ภูมิภาค" ที่กำหนดเองของคุณจะไม่ยุบอีกต่อไป


3
ยุติธรรมพอสมควร ฉันหวังว่าจะได้พบกับคำถามนี้เพื่อเพิ่มบล็อกเหล่านี้ลงในโครงร่างอัตโนมัติแม้ว่าจะไม่เหมาะสมสำหรับพวกเขา
Grank

1
แมตต์คุณสามารถทำได้ (ใน VS 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 รองรับเช่นกัน
Kon

3

ให้ฉันพูดอะไรที่แตกต่าง: กด(ctrl+m,ctrl+h)หรือแก้ไข> การสรุป> ซ่อนการเลือกมันมีประโยชน์มาก


1
@Mahdi คำถามคือเกี่ยวกับเครื่องมือที่จะยุบบล็อกของรหัส คุณคลิกชุดค่าผสมและ ifs ของคุณสำหรับ / ในขณะที่ลูป ฯลฯ ถูกยุบเพื่อให้คุณสามารถอ่านรหัสในระดับสูงสุดเท่าที่จะเป็นไปได้ จากนั้นคุณจะเข้าไปลึกเข้าไปในรหัส โซลูชันของคุณไม่สามารถใช้งานได้เพราะคุณจะต้องยุบพื้นที่ทั้งหมดก่อนและคุณไม่เห็นว่าภูมิภาคนั้นเป็นพื้นที่ใด ขอให้โชคดีในอนาคต
โรมัน

1
ก่อนอื่นคุณสามารถแสดงความคิดเห็นบางสิ่งแล้วซ่อนอยู่ภายใต้สิ่งนี้เพื่อให้ง่ายและยืดหยุ่นมากขึ้น
M เมื่อ

2

คุณสมบัตินี้ถูกเพิ่มไปยังโปรแกรมแก้ไข C # ของ Visual Studio 2010 ฉันไม่พบแหล่งที่ตรวจสอบความถูกต้องจริง แต่ฉันจำได้ว่าเห็นมันในหนึ่งในสมาชิกของทีม Dev 10 บล็อกที่พูดถึงการเปลี่ยนแปลงตั้งแต่ Beta 1 หรืออะไรบางอย่าง ในฐานะที่เป็นปลอบใจความคิดเห็นหนึ่งของ Microsoft ที่แนะนำให้พวกเขาต้องการเพิ่ม


0

ฉันจะเพิ่มที่นี่ว่าใน VS 2010 Microsoft ได้เพิ่มความสามารถของ WPF adorner โดยใช้ Managed Extensibility Framework (MEF) สิ่งนี้จะช่วยให้เราขยายตัวแก้ไขซอร์สโค้ดเพื่อจัดระเบียบพวกเขาในวิธีที่ดีกว่ามากขึ้นเพื่อให้อ่านและเข้าถึงได้ง่ายขึ้น

ยกตัวอย่างเช่นการสรุปความคิดเห็น Visualizer ว่าสกอตต์ Gu demoed ที่ PDC 2008

ดังนั้นหวังว่าจะเป็นวันพรุ่งนี้ที่ดีกว่าสำหรับนักพัฒนา :)


0

Coderush จะร่างบล็อกโค้ดทั้งหมดให้คุณ ไม่แน่ใจว่ามันช่วยให้คุณสามารถขยาย / ยุบบล็อก แต่การสรุปเป็นสิ่งที่ดีที่สุดถัดไป ฉันใช้ resharper แทน coderush ซึ่งเท่าที่ฉันรู้ว่าไม่มีการยุบบล็อกด้วย: (


0

ฉันพบสิ่งนี้สำหรับ Visual Studio 2013 และพบว่ามีประโยชน์มาก มันทำงานได้แม้ว่าคุณจะใส่เครื่องหมายวงเล็บง่ายๆรอบ ๆ รหัสของคุณด้วย {..... }

หลังจากแบ่งปันฉันพบว่ามีคนอื่นพูดถึงลิงก์นี้ด้วย คะแนนของฉันสำหรับเครื่องมือนี้ด้วย

เครื่องมือการจัดเค้าร่าง C # สำหรับ Visual Studio 2013


0

ใน VS2017 คุณสามารถไฮไลต์ส่วนของรหัสคลิกขวา, เค้าร่าง> ซ่อนตัวเลือก การทำเช่นนี้จะยุบรหัสและให้สลับเป็นส่วนที่ไฮไลต์ไว้


-2

# region, # endregion เป็นตัวเลือกอัจฉริยะ


10
กฎ StyleCop SA1123: DoNotPlaceRegionsWithinElements: การละเมิดกฎนี้เกิดขึ้นเมื่อใดก็ตามที่มีการวางภูมิภาคภายในเนื้อหาขององค์ประกอบรหัส ในบรรณาธิการหลายคนรวมถึง Visual Studio ภูมิภาคนั้นจะปรากฏขึ้นตามค่าเริ่มต้นซึ่งจะซ่อนรหัสภายในภูมิภาค โดยทั่วไปแล้วเป็นวิธีที่ไม่ดีในการซ่อนรหัสภายในเนื้อหาขององค์ประกอบเนื่องจากอาจนำไปสู่การตัดสินใจที่ไม่ถูกต้องเนื่องจากรหัสถูกเก็บรักษาไว้ตามกาลเวลา
Sam Harwell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.