How can I sort Fields, Properties and Methods in Visual Studio?

Visual Studio

Visual Studio Problem Overview


I know that for clarity in codes, I have to write first fields then constructor and then methods etc. But how can I automate it in Visual Studio?

Visual Studio Solutions


Solution 1 - Visual Studio

I think CodeMaid is the best free option for code formatting in Visual Studio.


To sort your file, open the file via solution explorer:

  1. Right click the open file
  2. Code Maid menu (likely near the top of the right click menu)
  3. Click Reorganize Active Document

Alternatively, using the default CodeMaid hotkeys CTRL+M,Z to sort your active file.

Solution 2 - Visual Studio

ReSharper can sort your class members (fields, constructors, methods, delegates) by name, accessibility, type, readonly, etc... You can also surround specific members with regions. What I like the most is the ability to group interface members (e.g., #region IDisposable with void Dispose() method in it) and methods that handle an event.

ReSharper provides both - an easy way to configure and trigger the sorting of class members.

Configuration

Create a XML file within Visual Studio and copy-paste the default type member layout (ReSharper Options > Languages > C# > Type Members Layout) into that file. Download the latest XSD schema. Add the schema file to Visual Studio's schema files (Menu > XML > Schemas... > Add). You should be able now, to edit the XML file with the help of IntelliSense.

Triggering

If you use the Visual Studio keyboard scheme (ReSharper Options > Visual Studio Integration) and press Ctrl+E,F for Silent Code Cleanup. A dialog will pop up, where you can select a Code Cleanup setting. For this setting you should check Reorder type members. The second time you press the shortcut, ReSharper will automatically reorder your class members.

1: ReSharper Type Members XSD Schema

Solution 3 - Visual Studio

Visual Studio has no feature that allows re-ordering already written code. That's the domain of add-ons. Resharper has a "Reordering type members" feature but that's only supported for C#, not for VB.NET code. NArrange seems to be able to do this. No idea, never used it myself.

Solution 4 - Visual Studio

If Code Sorting is your only concern, you can try the Visual Studio Extension CodeSorter

> CodeSorter is highly customizable extension that allows its users to > sort C# code itby various conditions such as names, types (method, > class, struct, ...), visibility modifiers (private, public, ...), > constness modifiers (const, static, readonly) and virtuality modifiers > (virtual, override, new, ...). > > It is possible to assign multiple search criteria to have the same > priority, for example place protected and private members first, and > then publics and internals. > > Names are compared in a way that leading "m_" and "_" is stripped. > This allows fields and properties (eg. _foo and Foo) to be right next > to each other. > > One-lined declarations are placed without delimiting blank line, while > multi-lined declarations are separated by a blank line. The exception > is that one-lined field followed by a multi-lined property without > comment of the same name will be placed without the delimiting blank > line.

Solution 5 - Visual Studio

Another option I found is XArrange. It is free and can be installed from the Extension Manager.

Issues I took with it...

  1. It puts methods before constructors.

  2. It removes any comments between members,properties,methods, etc.

  3. It's configuration is very limited. No way to change sorting order.

    XArrange Settings

Solution 6 - Visual Studio

Limited sorting of lines is included with Visual Studio 2022.

To use: select the lines you want to sort and in the top menu click: Edit > Advanced > Sort Lines

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFreshbloodView Question on Stackoverflow
Solution 1 - Visual StudioAlan FeekeryView Answer on Stackoverflow
Solution 2 - Visual StudioMatthiasView Answer on Stackoverflow
Solution 3 - Visual StudioHans PassantView Answer on Stackoverflow
Solution 4 - Visual StudioSreekanthGSView Answer on Stackoverflow
Solution 5 - Visual StudioDrew ChapinView Answer on Stackoverflow
Solution 6 - Visual StudioRussell MunroView Answer on Stackoverflow