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

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?



Solution 1:[1]

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:[2]

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:[3]

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:[4]

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:[5]

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:[6]

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Chris Marisic
Solution 2
Solution 3
Solution 4 SreekanthGS
Solution 5 Drew Chapin
Solution 6