2009-05-13 23 views
22

so VS problemi raggruppamento del codice sono un vecchio castagno, ma non sono stato in grado di trovare questo in tutte le altre discussioni che ho sfogliato:Nascondere le regioni in Visual Studio

Abbiamo un team di C# ragazzi, alcuni amano le regioni e altri li odiano e non sembra che abbiamo molto terreno di mezzo con cui lavorare.

C'è un plug-o add-in per VS che semplicemente "nasconde" le regioni? In modo che quelli che li vogliono li vedano come normali, ma le persone che installano il componente aggiuntivo e visualizzano un file .cs, le regioni semplicemente non ci sono, come se non esistessero.

posso vedere questo potrebbe essere un problema quando si sposta il codice in giro che potrebbe causare problemi di alcuni metodi che sono dentro o al di fuori della regione di sbagliato, ma che potrebbe essere un compromesso il team è felice con ...

+0

Quindi vuoi nascondere le linee con le direttive del preprocessore #regione e #endregion? – Merus

+1

Sì, non rimuoverli, basta renderli invisibili. – KevinT

+44

Ugh, regioni. Re del codice di offuscamento. Decani di design terribile. Oh come mi hai disprezzato con la tua presenza Ma per un attimo ti spazzoliamo da parte, lasciamo il codice spalancato, per sfogliare o fare il debugger, ma con te, rompicapo. Ugh, regioni. Cattivi capitani di costruzione. Campioni orgogliosi del caso. Con i tuoi segreti nascondi e tutto il tuo interno. Hai delle proprietà, d'accordo? Eppure un metodo o due, sono ben nascosti all'interno, da dove dovrei iniziare. Commercianti di abusi. Avatar di abusi. Le regioni del codice reclus-ive sono te. Ugh, regioni, il tuo uso potrebbe essere scarso e il tuo numero, pochi. Ugh, regioni. –

risposta

49

Odio regioni (la mia squadra li ama) e sono rimasto sorpreso di scoprire che nessuno ha scritto una proroga per renderli meglio . Alla fine ho scritto uno io chiamato I Hate #Regions:

Fai #regions succhiano meno (gratis):

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

  • Autoespansione regioni quando un file viene aperto
  • Opzionalmente impedire che le regioni vengano compresse (ma essere ancora in grado di comprimere altro codice)
  • Fornire la regione #regione/#end nes un più piccolo, sfondo più chiaro in modo che siano meno evidenti (anche un'opzione)
  • Lavori in C# e VB

Region Tool Screenshot

+0

@NotDan, ah, le mie scuse. In effetti, ho appena provato e questo fa esattamente quello che voglio. Molto bella! –

+0

@NotDan, OOOooooOOOooOoooOOO! Molto bello! Infine, posso smettere di lamentarmi con i miei colleghi che pensano che le regioni siano la cosa più bella dopo il pane a fette. :-) –

+0

@NotDan: +1: C'è qualche possibilità che tu abbia una versione di questo per VS 2008? –

0

Non conosco alcun plugin come quello, onestamente. Tuttavia, con VSTO, è molto facile scriverne uno da solo.

1

Personalmente, scrivo una macro VS (Strumenti> Macro) per espandere tutte le regioni sul file aperto.

(Heh, seconda domanda VS in due minuti).

-Oisin

+2

Potresti per favore pubblicare la tua macro qui? Non ho idea di come scriverli, ma le regioni mi fanno impazzire già. – User

0

Questo è un po '... squallido, e possono avere effetti collaterali, ma:

Strumenti -> Opzioni -> L'ambiente -> caratteri e dei colori -> preprocessore chiave Cambia i colori di primo piano e di sfondo in bianco (o qualunque sia lo sfondo predefinito).

Tuttavia non si vedranno altre parole chiave per il preprocessore.

+3

Questo non aiuta se la regione è crollata, anzi, potrebbe peggiorarla. –

9

Non ci sono tasti di scelta rapida per affrontare con loro:

 
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) 

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

+0

Uso costantemente anche queste scorciatoie –

0

Per VS 2008 utenti, si può fermare delineare e riavviarlo programatically (via una macro).Ho trovato questo codice in 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 

I lavori di cui sopra per C# IDE; per qualche motivo, l'IDE di VB non rimuove il contorno delle regioni se esplicitamente detto. Spero che questo ti aiuti!

- modifica aggiunto:

Ecco uno che fa il lavoro per Visual Basic .NET in Visual Studio 2008. E 'un po' di forza bruta, ma l'idea è di commentare tutti i marcatori #Region, ampliando la contorno. Il prossimo passo li disapprova, riportandoli al loro stato originale (non strettamente vero ... potrebbe avere usi illeciti di #region in altre parti del codice). Questo codice non restituisce la finestra di dialogo Trova & Sostituisci allo stato originale, neanche. Con questi caveat, questo è il modulo di macro che eseguirà questo compito:

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 

Ci possono essere alcuni altri metodi per ottenere questo per VB in VS2008. Posterò come li trovo

-4

Penso che sia divertente chiunque odia le Regioni. Amo le regioni così tanto che ho scritto un programma chiamato Regionizer, che è un progetto open source situato a http://regionizer.codeplex.com

Ho avuto boss e alcuni membri del team che li odiano, ma il mio strumento organizza tutto il codice in ordine alfabetico, quindi i metodi sono ordinati alfabeticamente nell'area Metodi, le proprietà vengono ordinate nella regione delle proprietà e gli eventi vengono ordinati nell'area degli eventi.

Cercare di trovare il codice senza questo strumento (o Regioni) è ciò che chiamo Codice Spaghetti).

Ho cercato un modo semplice per comprimere ed espandere tutte le regioni e MS gli ha detto che le regioni fanno parte del file .suo (stesso nome del progetto o della soluzione) e non c'è un modo semplice per ottenere una maniglia sulle regioni oggetto loro stessi.

Ho cercato per tutto il DTE e non ho trovato un modo per comprimere tutto o Espandi tutte le regioni, ho intenzione di provare il codice Macro e vedere se funziona.

Pubblicheremo un aggiornamento a breve.

+2

Non sono sicuro che sia un commento di April fools o no ... Ci sono strumenti migliori per questo: http://www.red-gate.com/products/dotnet-development/smartassembly/ –

Problemi correlati