【问题标题】:How can I sort Fields, Properties and Methods in Visual Studio?如何在 Visual Studio 中对字段、属性和方法进行排序?
【发布时间】:2022-04-19 14:19:16
【问题描述】:

我知道为了代码的清晰,我必须编写第一个字段,然后是构造函数,然后是方法等。但是如何在 Visual Studio 中自动化呢?

【问题讨论】:

标签: visual-studio


【解决方案1】:

我认为CodeMaid 是 Visual Studio 中代码格式化的最佳免费选项。


要对文件进行排序,请通过解决方案资源管理器打开文件:

  1. 右键单击打开的文件
  2. Code Maid 菜单(可能在右键菜单顶部附近)
  3. 点击Reorganize Active Document

或者,使用默认的 CodeMaid 热键 CTRL+M,Z 对活动文件进行排序。

【讨论】:

  • 它没有按预期工作。它无缘无故地对属性进行分组,在其中一些属性之间添加了空格,并删除了之前的评论和属性之间的空格。
  • Visual Studio 有一个弹出对话框,可让您在更改方法签名时手动重新排序方法中的参数。在对类中的成员重新排序时,我想要相同的手动功能。 CodeMaid 是让您这样做还是只是自动排序?
  • 根据该项目的主页,它最高支持 Visual Studio 2022。您可以将 CodeMaid 与附加扩展 CM+ 结合使用以获得更好的格式。我已经在一些示例代码上进行了尝试,效果很好,并且易于使用。谢谢!
  • 我想知道 CodeMaid 是否可以重新组织用 [Obsolete(...)] 装饰的方法(将它们组合在一起,将它们移动到类的末尾等)?
【解决方案2】:

ReSharper 可以按名称、可访问性、类型、只读等对您的类成员(字段、构造函数、方法、委托)进行排序...您还可以用区域包围特定成员。我最喜欢的是对接口成员进行分组的能力(例如,#region IDisposablevoid Dispose() 方法)和处理事件的方法。

ReSharper 提供了两者 - 一种配置和触发类成员排序的简单方法。

配置

在 Visual Studio 中创建一个 XML 文件,并将默认类型成员布局(ReSharper 选项 > 语言 > C# > 类型成员布局)复制粘贴到该文件中。下载最新的XSD schema。将架构文件添加到 Visual Studio 的架构文件(菜单 > XML > 架构... > 添加)。您现在应该可以在 IntelliSense 的帮助下编辑 XML 文件了。

触发

如果您使用 Visual Studio 键盘方案(ReSharper 选项 > Visual Studio 集成)并按 Ctrl+E,F for 静默代码清理。将弹出一个对话框,您可以在其中选择 代码清理 设置。对于此设置,您应该检查重新排序类型成员。第二次按下快捷键时,ReSharper 会自动重新排序您的班级成员。

1:ReSharper Type Members XSD Schema

【讨论】:

  • Resharper 可能是最强大的扩展......但(可以理解)它不是免费的。
【解决方案3】:

Visual Studio 没有允许对已编写的代码重新排序的功能。这就是附加组件的领域。 Resharper 具有“重新排序类型成员”功能,但仅支持 C#,不支持 VB.NET 代码。 NArrange 似乎能够做到这一点。不知道,自己没用过。

【讨论】:

    【解决方案4】:

    如果你只关心代码排序,你可以试试 Visual Studio Extension CodeSorter

    CodeSorter 是高度可定制的扩展,它允许其用户 按名称、类型(方法、 class, struct, ...), 可见性修饰符 (private, public, ...), 常量修饰符(常量、静态、只读)和虚修饰符 (virtual, override, new, ...)。

    可以分配多个搜索条件以具有相同的 优先级,例如将受保护成员和私有成员放在首位,以及 然后是公共和内部。

    名称的比较方式是去掉前导“m_”和“_”。 这允许字段和属性(例如 _foo 和 Foo)紧随其后 彼此。

    单行声明放置时不分隔空行,而 多行声明由空行分隔。例外 是单行字段后跟多行属性,没有 相同名称的注释将被放置,没有分隔空白 行。

    【讨论】:

    • 我查看了 CodeSorter 的项目页面,cmets 告诉我不幸的是这个工具已经过时了,而且它不支持 Roslyn。似乎开发者不想更新它。
    【解决方案5】:

    我发现的另一个选项是XArrange。它是免费的,可以从 Extension Manager 安装。

    我遇到的问题...

    1. 它将方法放在构造函数之前。
    2. 它会删除成员、属性、方法等之间的所有 cmets。
    3. 它的配置非常有限。无法更改排序顺序。

    【讨论】:

    • 为 Visual Studio 2012 编写,自 ...
    【解决方案6】:

    Visual Studio 2022 包含有限的行排序。

    要使用:选择要排序的行,然后在顶部菜单中单击: 编辑 > 高级 > 排序行

    【讨论】:

    • 这只会排序行,而不是函数。它会按行的第一个字母排序,而不是方法名,所以对接口排序没有多大用处
    猜你喜欢
    • 2015-12-16
    • 2013-05-19
    • 2012-05-03
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多