2009-05-13 40 views
22

Tôi biết VS vấn đề mã gấp là một hạt dẻ cũ, nhưng tôi đã không thể tìm thấy điều này trong tất cả các cuộc thảo luận khác mà tôi đã duyệt qua:Ẩn các vùng trong Visual Studio

Chúng tôi có một đội ngũ C# các bạn, một số vùng tình yêu và những người khác ghét họ và dường như chúng tôi không có nhiều cơ sở để làm việc với họ.

Có trình cắm thêm hay bổ sung cho VS sẽ chỉ 'ẩn' các khu vực không? Vì vậy, những người muốn họ sẽ thấy chúng như bình thường, nhưng những người cài đặt bổ trợ và xem tệp .cs các khu vực không có ở đó, như thể chúng không tồn tại.

Tôi có thể thấy điều này có thể là một vấn đề khi di chuyển mã xung quanh rằng nó có thể gây ra các vấn đề về phương pháp nhất định là trong hoặc ngoài khu vực sai, nhưng đó có thể là một sự cân bằng đội là hạnh phúc với ...

+0

Vì vậy, bạn muốn ẩn các dòng có chỉ thị tiền xử lý #region và #endregion? – Merus

+1

Có - không xóa chúng, chỉ cần làm cho chúng vô hình. – KevinT

+44

Ugh, các vùng. Kings of obfuscation mã. Deans thiết kế dire. Oh làm thế nào ngươi ghét tôi với sự hiện diện của ngươi. Nhưng trong một khoảnh khắc để gạt sang một bên, hãy để mã mở rộng, để duyệt hoặc gỡ rối, nhưng với bạn, skullduggery. Ugh, các vùng. Đội trưởng của đội xây dựng. Nhà vô địch tự hào về cơ hội. Với bí mật của bạn, và tất cả các bên trong của bạn. Có tài sản của bạn, nói rằng bạn? Tuy nhiên, một hoặc hai phương pháp, cũng được ẩn bên trong, nơi tôi nên bắt đầu. Thương nhân lạm dụng. Avatars của lạm dụng. Các khu vực của mã reclus-ive là ngươi. Ugh, khu vực, có thể sử dụng của bạn được thưa thớt và số lượng của bạn, ít. Ugh, các vùng. –

Trả lời

49

Tôi ghét vùng (đội của tôi yêu họ) và rất ngạc nhiên khi thấy rằng không ai đã viết một phần mở rộng để làm cho họ tốt hơn . Cuối cùng tôi đã viết một bản thân mình gọi I Hate #Regions:

Hãy #regions hút ít hơn (miễn phí):

http://visualstudiogallery.msdn.microsoft.com/0ca60d35-1e02-43b7-bf59-ac7deb9afbca

  • Auto Mở rộng vùng khi một tập tin được mở
  • Tùy chọn ngăn các vùng bị sập (nhưng vẫn có thể thu gọn mã khác)
  • Cung cấp cho #region/#end region li nes một nhỏ hơn, nền nhẹ hơn nên họ ít chú ý (cũng là một tùy chọn)
  • trình trong C# và VB

Region Tool Screenshot

+0

@NotDan, ah, xin lỗi của tôi. Trong thực tế, chỉ cần thử nó ra và điều này không chính xác những gì tôi muốn. Rất đẹp! –

+0

@NotDan, OOOooooOOOooOoooOOO! Rất tuyệt! Cuối cùng, tôi có thể ngừng bitching cho đồng nghiệp của tôi, những người nghĩ rằng khu vực là điều lớn nhất kể từ khi bánh mì cắt lát. :-) –

+0

@NotDan: +1: Bất kỳ cơ hội nào bạn có phiên bản này cho VS 2008? –

0

Tôi không biết bất kỳ plugin nào như vậy, một cách trung thực. Tuy nhiên, với VSTO, rất dễ dàng để tự viết cho mình.

1

Cá nhân, tôi viết một macro VS (Công cụ> Macro) để mở rộng tất cả các vùng trên tệp đang mở.

(Heh, câu hỏi macro thứ hai về VS trong hai phút).

-Oisin

+2

Bạn có thể vui lòng đăng macro của mình tại đây không? Không có ý tưởng làm thế nào để viết chúng, nhưng khu vực lái xe cho tôi điên đã. – User

0

này hơi ... nhếch nhác, và có thể có tác dụng phụ nhưng:

Tools -> Options -> Môi trường -> Fonts và màu sắc -> Preprocessor từ khóa Thay đổi màu nền trước và màu nền thành trắng (hoặc bất kỳ nền mặc định nào của bạn).

Bạn sẽ không thấy các từ khóa tiền xử lý khác.

+3

Điều này không giúp ích gì nếu khu vực bị sụp đổ - trên thực tế, nó có thể làm cho nó tồi tệ hơn. –

9

Có phím tắt để đối phó với họ:

 
Ctrl+M, Ctrl+M Collapse or expand the block you're currently in. 
Ctrl+M, Ctrl+O Collapse all blocks in the file 
Ctrl+M, Ctrl+L Expand all blocks in the file 
Ctrl+M, Ctrl+P Stop outlining mode. (Ctrl+M, Ctrl+O resumes) 

Xem http://www.codinghorror.com/blog/archives/001147.html

+0

tôi liên tục sử dụng các phím tắt này –

0

Đối với năm 2008 người dùng VS, bạn có thể dừng phác thảo và khởi động lại chương trình khác (thông qua một macro).Tôi tìm thấy mã này tại http://weblogs.asp.net/rweigelt/archive/2003/07/06/9741.aspx

Imports EnvDTE 

' Expands all regions in the current document  
Sub ExpandAllRegions()   
    DTE.ExecuteCommand("Edit.StopOutlining")   
    DTE.ExecuteCommand("Edit.StartAutomaticOutlining")  
End Sub 

Các công trình trên cho C# IDE; vì một số lý do, IDE của VB không loại bỏ phác thảo với các vùng khi được nói rõ ràng. Hi vọng điêu nay co ich!

- nối chỉnh sửa:

Đây là một loại làm việc cho Visual Basic.NET trong Visual Studio 2008. Đó là một chút sức mạnh vũ phu, nhưng ý tưởng là để bình luận tất cả các dấu hiệu #region, mở rộng đề cương. Bước tiếp theo uncomments họ, trở về trạng thái ban đầu của họ (không đúng sự thật ... có thể có sử dụng rogue của #region trong các phần khác của mã). Mã này không trả lại hộp thoại Tìm kiếm & Thay thế lại cho trạng thái ban đầu của nó. Với những lưu ý này, đây là mô-đun macro sẽ thực hiện công việc này:

Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports System.Diagnostics 

Public Module MacroMod01 
    Sub ExpandAllRegions() 
    ' comment out all #region occurances 
     DTE.ExecuteCommand("Edit.Replace") 
     DTE.Find.Action = vsFindAction.vsFindActionReplaceAll 
     DTE.Find.FindWhat = "#region" 
     DTE.Find.ReplaceWith = "'#region" 
     DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument 
     DTE.Find.MatchCase = False 
     DTE.Find.MatchWholeWord = False 
     DTE.Find.MatchInHiddenText = True 
     DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral 
     DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone 
     DTE.Find.Action = vsFindAction.vsFindActionReplaceAll 
     DTE.Find.Execute() 

    ' uncomment all #region occurances 
     DTE.ExecuteCommand("Edit.Replace") 
     DTE.Find.Action = vsFindAction.vsFindActionReplaceAll 
     DTE.Find.FindWhat = "'#region" 
     DTE.Find.ReplaceWith = "#region" 
     DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument 
     DTE.Find.MatchCase = False 
     DTE.Find.MatchWholeWord = False 
     DTE.Find.MatchInHiddenText = True 
     DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral 
     DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone 
     DTE.Find.Action = vsFindAction.vsFindActionReplaceAll 
     DTE.Find.Execute() 

    'close the find 'n replace dialog 
     DTE.Windows.Item("{CF2DDC32-8CAD-11D2-9302-005345000000}").Close() 

    End Sub 

End Module 

Có thể có một vài phương pháp khác để thực hiện điều này cho VB trong VS2008. Tôi sẽ đăng khi tôi tìm thấy chúng.

-4

Tôi nghĩ rằng đó là bất cứ ai buồn cười ghét Khu vực. Tôi yêu khu vực rất nhiều Tôi đã viết một chương trình tên là Regionizer, một dự án mã nguồn mở nằm ở số http://regionizer.codeplex.com

Tôi đã có một số ông chủ và một số thành viên trong nhóm ghét họ, nhưng công cụ của tôi sắp xếp tất cả các mã theo thứ tự bảng chữ cái. trong Vùng Phương thức, Thuộc tính được sắp xếp trong Vùng Thuộc tính và Sự kiện được sắp xếp trong vùng Sự kiện.

Cố gắng tìm mã mà không có công cụ này (hoặc Khu vực) là những gì tôi gọi là Mã Spaghetti).

Tôi đã tìm kiếm một cách dễ dàng để thu gọn và mở rộng tất cả các vùng và đã được MS nói rằng các vùng là một phần của tệp .suo (cùng tên với dự án hoặc giải pháp) và không có cách dễ dàng để có được một xử lý trên các khu vực đối tượng họ bản thân.

Tôi đã tìm kiếm tất cả thông qua DTE và tôi không tìm thấy cách nào để thu gọn tất cả hoặc Mở rộng tất cả các vùng, tôi sẽ thử mã Macro và xem nó có hoạt động hay không.

Sẽ sớm đăng nội dung cập nhật.

+2

Không chắc chắn nếu đó là một kẻ ngốc tháng tư bình luận hay không ... Có những công cụ tốt hơn cho việc này: http://www.red-gate.com/products/dotnet-development/smartassembly/ –

Các vấn đề liên quan