2009-05-13 16 views
22

wiem kwestie kod składane VS to stary kasztan, ale nie byłem w stanie znaleźć to we wszystkich innych dyskusjach ja przejrza³e¶:Ukrywanie regionów w Visual Studio

Mamy zespół C# faceci, niektóre regiony miłości i inni nienawidzą ich i nie wydaje nam się, żeby mieli z tym dużo do czynienia.

Czy istnieje wtyczka lub dodatek do VS, który po prostu "ukryje" regiony? Aby ci, którzy ich potrzebują, zobaczą je jako normalne, ale ludzie, którzy instalują dodatek i przeglądają plik .cs, nie mają tam regionów, jakby nie istniały.

widzę, że to może być problem przy przenoszeniu kodu dookoła, że ​​może to spowodować problemy z niektórych metod będących w lub poza złym regionie, ale to może być kompromis zespół jest zadowolony z ...

+0

Chcesz ukryć wiersze za pomocą dyrektyw preprocesora #region i #endregion? – Merus

+1

Tak - nie usuwaj ich, po prostu zamień w niewidoczne. – KevinT

+44

Ugh, regiony. Królowie obfuskacji kodu. Dziekani o złym wzornictwie. O, jakże mnie wzgardziłeś swoją obecnością. Ale przez chwilę odgarnij cię na bok, zostaw kod szeroko otwarty, do przeglądania lub debuggowania, ale z tobą, skullduggery. Ugh, regiony. Fałszywi kapitanowie budowy. Dumni bohaterowie przypadku. Tajemnicami, które ukrywasz, i wszystkimi twoimi wnętrznościami. Czy masz właściwości, mówisz? Jednak metoda lub dwie, są dobrze ukryte w środku, od czego powinienem zacząć. Kupcy nadużywania. Awatary nadużyć. Regiony z kodem reclus-vis są cię. Ugh, regiony, niech twoje użycie będzie rzadkie, a twój numer, kilka. Ugh, regiony. –

Odpowiedz

49

Nienawidzę regiony (mój zespół ich kocha) i był zaskoczony, że nikt nie napisał rozszerzenie, aby je lepiej . I w końcu napisał jedną siebie nazwie I Hate #Regions:

Bądź #regions ssać mniej (za darmo):

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

  • Auto Expand regiony, gdy plik jest otwarty
  • Opcjonalnie zapobiegaj zawijaniu regionów (ale nadal można zwinąć inny kod)
  • Podaj region #region/#end li nes mniejsze, lżejsze tło więc są mniej widoczne (również opcja)
  • Works w C# i VB

Region Tool Screenshot

+0

@NotDan, ah, moje przeprosiny. W rzeczywistości, po prostu wypróbowałem to i robi dokładnie to, co chcę. Bardzo dobrze! –

+0

@NotDan, OOOooooOOOooOoooOOO! Bardzo fajny! W końcu mogę przestać szamotać się moim współpracownikom, którzy uważają, że regiony są najlepszą rzeczą od czasu krojonego chleba. :-) –

+0

@NotDan: +1: Jest szansa, że ​​masz wersję tego dla VS 2008? –

0

Nie znam żadnej takiej wtyczki, szczerze. Jednak z VSTO, bardzo łatwo jest napisać samemu.

1

Osobiście piszę makro VS (Narzędzia> Makro), aby rozwinąć wszystkie otwarte regiony.

(Heh, drugie pytanie makro VS w dwie minuty).

-Oisin

+2

Czy możesz tutaj opublikować swoje makro? Nie mam pojęcia, jak je napisać, ale regiony doprowadzają mnie do szału. – User

0

Jest to nieco ... marny i mogą mieć skutki uboczne, ale:

Narzędzia -> Opcje -> Środowisko -> Czcionki i kolory -> Preprocessor Hasło Zmień kolory pierwszego planu i tła na biały (lub dowolne inne domyślne tło).

Nie zobaczysz jednak innych słów kluczowych dotyczących preprocesora.

+3

To nie pomoże, jeśli region się zawali - w rzeczywistości może to pogorszyć sytuację. –

9

Istnieje skrótów klucze do radzenia sobie z nimi:

 
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) 

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

+0

ciągle używam tych skrótów –

0

dla VS Użytkownicy 2008, można przestać przedstawiając i ponownie go programowo (przez makro).Znalazłem ten kod pod 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 

Powyższe działa dla C# IDE; z jakiegoś powodu IDE VB nie usuwa konturów z regionami, o ile wyraźnie im to zostało powiedziane. Mam nadzieję że to pomoże!

- dołączany edit:

Oto jeden, który działa dla Visual Basic .NET w Visual Studio 2008. To trochę brutalnej siły, ale chodzi o to, aby skomentować wszystkich markerów #region, rozszerzając zarys. Kolejny krok odkomentuje ich, przywracając ich do pierwotnego stanu (nie jest to absolutnie prawdą ... może mieć nieuczciwe użycie #region w innych częściach kodu). Ten kod nie zwraca ponownie okna dialogowego Znajdź & Powrót do jego oryginalnego stanu. Z tymi zastrzeżeniami, to jest makro moduł, który będzie wykonać tę chore:

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 

Nie może być kilka innych sposobów, aby tego dokonać dla VB w VS2008. Będę publikować, kiedy je znajdę.

-4

Myślę, że to zabawne, że nie znosi regionów. Tak bardzo kocham regiony, napisałem program o nazwie Regionizer, który jest projektem o otwartym kodzie źródłowym, znajdującym się pod adresem http://regionizer.codeplex.com

Miałem szefów i członków zespołu, którzy ich nienawidzą, ale moje narzędzie porządkuje alfabetycznie cały kod, więc metody są posortowane alfabetycznie w Regionie metod właściwości są sortowane w regionie właściwości, a zdarzenia są sortowane w regionie zdarzeń.

Spróbuj znaleźć kod bez tego narzędzia (lub regionów), co nazywam Kodem Spaghetti).

Szukałem łatwego sposobu na zwinięcie i rozwinięcie wszystkich regionów i powiedziano mi przez MS, że regiony są częścią pliku .suo (ta sama nazwa co projekt lub rozwiązanie) i nie ma łatwego sposobu aby uzyskać uchwyt na obiektach regionów, które są ich obiektami.

Przeszukałem cały DTE i nie znalazłem sposobu na zwinięcie wszystkich lub rozwinięcie wszystkich regionów. Zamierzam wypróbować kod Macro i sprawdzić, czy działa.

Wkrótce opublikuje aktualizację.

+2

Nie jestem pewien, czy to jest komentarz do głupca w kwietniu, czy nie ... Są na to lepsze narzędzia: http://www.red-gate.com/products/dotnet-development/smartassembly/ –

Powiązane problemy