c# - visual - vs 2017 collapse regions




Visual Studio C#-Anweisung wird minimiert (8)

Wenn ich wirklich lange Code-Blöcke bearbeite (die sowieso refaktoriert werden sollten, aber das geht über den Rahmen dieser Frage hinaus), sehne ich mich oft nach der Fähigkeit, Anweisungsblöcke zu reduzieren, so wie man Funktionsblöcke reduzieren kann. Das heißt, es wäre toll, wenn das Minus-Symbol in der Codeumrandung für alles erscheint, das in geschweifte Klammern eingeschlossen ist. Es scheint für Funktionen, Klassen, Regionen, Namespaces, Usings, aber nicht für bedingte oder iterative Blöcke zu erscheinen. Es wäre fantastisch, wenn ich Dinge wie ifs, switches, forefaches, so was zusammenfassen könnte!

Etwas in das Googeln hinein, entdeckte ich, dass C ++, das in VS skizziert, dies erlaubt, aber C #, das in VS skizziert, nicht tut. Ich verstehe nicht wirklich warum. Sogar Notepad ++ wird so zusammenbrechen, wenn ich die C # -Formatierung auswähle, also verstehe ich nicht warum Visual Studio nicht.

Kennt jemand ein VS2008-Add-In, das dieses Verhalten aktiviert? Oder eine Art versteckter Rahmen dafür?

Bearbeitet um hinzuzufügen: Einfügen von Regionen ist natürlich eine Option und es ist mir schon eingefallen, aber ganz ehrlich gesagt, ich sollte nicht Dinge in eine Region wickeln müssen, die bereits in geschweiften Klammern ... wenn ich das bearbeiten würde existierender Code, würde ich es einfach umgestalten, um eine bessere Trennung der Bedenken sowieso zu haben. ("Umhüllen" mit neuen Methoden anstelle von Regionen;)


# region, # endregion ist die intelligente Option.


Ab Visual Studio 2017 ist das Zusammenklappen von Anweisungen integriert.

Es gibt mehrere Erweiterungen, die diese Aufgabe für Versionen von VS vor 2017 durchführen, beginnend mit der VS 2010-Version:

Die letzte Erweiterung unterstützt nur VS 2015 und VS 2017, ist aber die leistungsfähigste.
Es unterstützt die Syntaxfärbung in kollabierten Blöcken, ist fehlertoleranter und optimiert.

Wenn die Erweiterung nicht zu installieren scheint, nachdem Sie einen Browser zum Herunterladen verwendet haben, versuchen Sie es mit dem integrierten Visual Studio-Erweiterungs-Manager.



Ich bin mir nicht bewusst, Add-Ins, aber Sie haben Regionen erwähnt und ich sehe nichts falsch daran, so etwas zu tun ...

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: Als Antwort auf die Frage EDIT: Du hast Recht, eine Reihe von Regionen überall zu kleben ist nicht ideal und Refactoring ist wahrscheinlich der Weg zu gehen. Aber es scheint, dass Sie nach etwas Magischem suchen, das den Code für Sie "organisieren" wird, und ich glaube nicht, dass das existiert.


Ich werde hier hinzufügen, dass in VS 2010 Microsoft WPF Adorner-Funktionen mit Managed Extensibility Framework (MEF) hinzugefügt hat, dies ermöglicht es uns, den Quellcode-Editor zu erweitern, um sie besser zu organisieren, um es lesbarer und zugänglicher zu machen.

Zum Beispiel der Visualizer zur Zusammenfassung von Kommentaren, den Scott Gu auf der PDC 2008 vorstellte .

Freu dich also auf ein besseres Morgen für Entwickler :)


In VS2017 können Sie einen Codeabschnitt markieren, mit der rechten Maustaste klicken, Gliederung> Auswahl ausblenden. Dadurch wird der Code minimiert und ein Wechsel zum hervorgehobenen Bereich ermöglicht.


Sie können bestimmte Textblöcke in Visual Studio ausblenden, aber Sie müssen die automatische Gliederung deaktivieren.

Klicken Sie mit der rechten Maustaste in Ihr Code-Fenster und wählen Sie (Outlining | Outlining beenden).

Wählen Sie dann einen Text aus, klicken Sie mit der rechten Maustaste und wählen Sie (Gliederung | Auswahl ausblenden).

Wenn Sie das automatische Outlining erneut aktivieren, werden Ihre benutzerdefinierten "Regionen" nicht mehr minimiert.


Visual Studio 2008 unterstützt Regionen innerhalb von Funktionen, solange Sie sie in derselben Code-Hierarchieebene beibehalten

#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
}






outlining