Question

Je sais que les questions de pliage de code VS sont un vieux marronnier, mais je ne l'ai pas pu trouver dans toutes les autres discussions que j'ai parcouru:

Nous avons une équipe de gars C #, certaines régions d'amour et d'autres les détestent et nous ne semblent pas avoir beaucoup de terrain d'entente pour travailler avec.

Y at-il un ou plug-in pour ajouter VS qui va juste « cacher » les régions? Pour que ceux qui veulent les voir ne les comme d'habitude, mais les gens qui installent le complément et afficher un fichier .cs les régions ne sont tout simplement pas là, comme si elles n'existent pas.

Je peux voir cela pourrait être un problème lorsque le code se déplacer que cela pourrait causer des problèmes de certaines méthodes étant dans ou en dehors de la région mal, mais cela pourrait être un compromis entre l'équipe est heureuse avec ...

Était-ce utile?

La solution

Je déteste les régions (mon équipe les aime) et a été surpris de constater que personne n'a écrit une extension pour les rendre mieux. J'ai finalement écrit moi-même appelé I Hate #Regions :

Faire #regions sucent moins (gratuit):

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

  • Auto Expand régions lorsqu'un fichier est ouvert
  • En option empêche les régions d'être effondrés (mais toujours être en mesure de s'effondrer tout autre code)
  • Donner les lignes #region / #end région un plus petit, plus léger fond de sorte qu'ils sont moins visibles (également une option)
  • Travaux en C # et VB

Outil Capture d'écran Région

Autres conseils

Il y a des touches de raccourci pour les traiter:

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) 

Voir Le problème avec le pliage du code

Personnellement, j'écris une macro VS (Outils> Macro) pour développer toutes les régions dans le dossier ouvert.

Je ne sais pas d'un plug-in comme ça, honnêtement. Cependant, avec VSTO , il est très facile d'écrire vous-même.

est un peu ... sordide, et peut avoir des effets secondaires, mais:

Outils -> Options -> Environnement -> Polices et couleurs -> préprocesseur les mots-clés Changer de blanc les couleurs de premier plan et arrière-plan (ou quel que soit votre arrière-plan par défaut est).

Vous ne verrez pas d'autres mots-clés préprocesseur cependant.

Pour les utilisateurs VS 2008, vous pouvez arrêter et redémarrer décrivant programatically (via une macro). J'ai trouvé ce code 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

Les travaux ci-dessus pour C # IDE; pour une raison quelconque, l'IDE de Visual Basic ne supprime pas décrivant des régions quand on lui dit explicitement. Espérons que cela aide!

- modifier en annexe:

est ici celui qui fonctionne pour Visual Basic .NET dans Visual Studio 2008. Il est un peu de force brute, mais l'idée est de commenter tous les marqueurs de #region, élargir le contour. L'étape suivante les uncomments, les retourner à leur état d'origine (pas strictement vrai ... pourrait avoir des utilisations de voyous #region dans d'autres parties du code). Ce code ne retourne pas la boîte de dialogue Rechercher et remplacer revenir à son état d'origine, que ce soit. Avec ces mises en garde, c'est le module de macro qui effectuera cette tâche:

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

Il peut y avoir quelques autres méthodes pour y parvenir pour VB dans VS2008. Je signalerai que je les trouve.

Je pense qu'il est drôle quelqu'un qui déteste les régions. J'aime tant les régions que j'ai écrit un programme appelé Regionizer, qui est un projet open source à l'adresse http://regionizer.codeplex.com

J'ai eu des patrons et des membres de l'équipe qui les détestent, mais mon outil Organise l'ensemble du code alphabétique, donc les méthodes sont classées par ordre alphabétique dans la région Méthodes, Propriétés sont classés dans la région propriétés et événements sont classés dans la région des événements.

Essayez de trouver le code sans cet outil (ou régions) est ce que j'appelle le code spaghetti).

Je cherchais un moyen facile de réduire et développer toutes les régions et ont dit MS que les régions font partie du fichier .suo (même nom que le projet ou solution) et il n'y a pas un moyen facile de obtenir une poignée sur les régions les mêmes objet.

Je l'ai cherché tout au long de l'DTE et je ne l'ai pas trouvé un moyen de réduire ou Tout développer toutes les régions, je vais essayer le code Macro et voir si cela fonctionne.

va bientôt publier une mise à jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top