web-dev-qa-db-fra.com

Réduction de l'instruction Visual Studio C #

Lors de l'édition de très longs blocs de code (qui doivent certainement être refactorisés de toute façon, mais cela dépasse le cadre de cette question), je souhaite souvent pouvoir réduire les blocs d'instructions comme on peut le faire. C'est-à-dire que ce serait formidable si l'icône moins apparaissait sur le contour du code pour tout ce qui était entre accolades. Il semble apparaître pour les fonctions, les classes, les régions, les espaces de noms, les utilisations, mais pas pour les blocs conditionnels ou itératifs. Ce serait fantastique si je pouvais effondrer des choses comme des ifs, des switchs, des foreaches, ce genre de chose!

En cherchant un peu dans cela, j'ai découvert qu'apparemment, les contours C++ dans VS permettent cela, mais pas les contours C # dans VS. Je ne comprends pas vraiment pourquoi. Même le Bloc-notes ++ le fera pour que ces effets se réduisent si je sélectionne la mise en forme C #, afin que je ne comprenne pas pourquoi Visual Studio ne le fait pas.

Est-ce que quelqu'un connaît un complément VS2008 qui permettra ce comportement? Ou une sorte de paramètre caché pour cela?

Edité pour ajouter: insérer des régions est bien sûr une option et cela m’était déjà arrivé, mais franchement, je ne devrais pas avoir à insérer des éléments dans une région qui est déjà entourée d’accolades ... si je devais modifier le code existant, je voudrais simplement le reformuler pour avoir une meilleure séparation des problèmes de toute façon. ("wrapping" avec de nouvelles méthodes au lieu de régions;)

176
Grank

À partir de Visual Studio 2017, la réduction des instructions est intégrée.

Plusieurs extensions effectuent cette tâche pour les versions de VS antérieures à 2017, à partir de la version de VS 2010:

La dernière extension ne prend en charge que VS 2015 et VS 2017, mais c'est la plus puissante.
Il prend en charge la coloration de la syntaxe dans les blocs réduits, il est plus tolérant aux pannes et optimisé.

Si l'extension ne semble pas s'installer après son téléchargement par un navigateur, essayez d'utiliser le gestionnaire d'extensions Visual Studio intégré.

264
Skyblade

Je ne suis pas au courant des compléments, mais vous avez mentionné des régions et je ne vois aucun mal à faire quelque chose comme ça ...

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
}

EDIT: En réponse à la question de la question: Vous avez raison, il n’est pas idéal de regrouper un grand nombre de régions, et la refactorisation est probablement la voie à suivre. Mais il semble que vous recherchiez quelque chose de magique qui "organisera" le code pour vous, et je ne pense pas que cela existe.

20
Kon

Vous pouvez réduire des blocs de texte spécifiques dans Visual Studio, mais vous devez désactiver le contour automatique.

Faites un clic droit dans la fenêtre de code et sélectionnez (Plan | Arrêter le plan).

Ensuite, sélectionnez du texte, cliquez avec le bouton droit de la souris et sélectionnez (Plan | Masquer la sélection).

Lorsque vous réactivez le contour automatique, vos "régions" personnalisées ne seront plus réduites.

19
Matt Brunell

Visual Studio 2008 prend en charge les régions à l'intérieur de fonctions tant que vous les conservez dans le même niveau hiérarchique de code.

#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
}
3
Chris Marisic

Cette fonctionnalité a été ajoutée à l'éditeur C # de Visual Studio 2010. Je ne parviens pas à trouver la source qui vérifie sa présence, mais je me souviens de l'avoir vue sur l'un des blogs de membres de l'équipe de développement 10 qui parlait de changements depuis la version bêta 1 ou quelque chose du genre. En guise de consolation, voici un commentaire de Microsoft suggérant qu'ils voulaient l'ajouter.

2
Sam Harwell

Permettez-moi de dire quelque chose de différent: appuyez sur(ctrl+m,ctrl+h) ou dans édition> définition> masquer la sélection.

2
Mahdi Rafatjah

J'ai trouvé cela pour Visual Studio 2013 et je l'ai trouvé très utile. Cela fonctionne même si vous mettez des accolades simples autour de votre code avec {.....}

Après le partage, j'ai trouvé quelqu'un d'autre a également mentionné ce lien. Mon vote est pour cet outil aussi.

Outil de contour C # pour Visual Studio 2013

0
Builder

Dans VS2017, vous pouvez mettre en surbrillance une section de code, cliquer avec le bouton droit de la souris sur, Plan> Plan de sélection. Cela réduira le code et fournira une bascule à la section en surbrillance.

0
LoflinA

J'ajouterai ici que, dans VS 2010, Microsoft a ajouté des fonctionnalités WPF adorner à l'aide de MEF (Managed Extensibility Framework), ce qui nous permettra d'étendre l'éditeur de code source afin de mieux l'organiser, de le rendre plus lisible et accessible.

Par exemple, le visualiseur de synthèse des commentaires que Scott Gu a présenté à PDC 2008 .

Alors attendons avec impatience un avenir meilleur pour les développeurs :)

0
Vin

Coderush décrira tous les blocs de code pour vous. Vous ne savez pas si cela vous permet de développer/réduire les blocs, mais le contour est la meilleure chose à faire. J'utilise resharper à la place de coderush qui, autant que je sache, ne fournit pas non plus de blocage de bloc :(

0
goku_da_master