You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ReSharper Code Cleanup对区域内成员应用排序规则?

解决ReSharper区域内成员排序规则不生效的问题

哈哈,这个问题我之前也踩过坑!ReSharper默认确实会把#region块当成一个不可拆分的整体,不会主动调整区域内部的成员顺序,但其实只要稍微调整文件布局配置,就能让它在保留区域结构的同时,对区域内的成员应用你设置的排序规则。

具体配置步骤:

  1. 打开ReSharper设置:用快捷键Alt+R, O(或者通过菜单栏ReSharper → Options),找到Code Editing → C# → File Layout。
  2. 找到你正在使用的布局方案(默认是"Default",如果有自定义方案就选你的自定义项),展开到你已经配置好的「Fields」排序节点。
  3. 核心操作:给区域添加递归处理规则
    • 右键点击布局根节点(比如「Type Members」),选择Add → Region,创建一个Region节点。
    • 选中这个新的Region节点,在右侧属性面板里设置:
      • 「Process contents」改为Yes(这是让ReSharper递归处理区域内成员的关键);
      • 如果只想针对特定名称的区域生效(比如#region Private Fields),可以在「Name pattern」里填写对应的区域名称,留空的话会匹配所有区域。
    • 把你之前配置好的「Fields」节点(就是按Readonly排序、Access二次排序的那个),拖到这个Region节点下面,作为它的子节点。
    • 同时,确保原来在「Type Members」下的「Fields」节点保留不变,这样区域外的字段依然会遵循同样的规则。
  4. 检查Code Cleanup配置:打开Code Cleanup设置(Alt+R, C, S),选中你常用的Cleanup配置,确保勾选了Reorder members选项,并且关联了你刚才调整好的文件布局方案。

示例布局结构参考:

Type Members
  - Region (Process contents: Yes, Name pattern: [留空或特定区域名])
    - Fields (Sort by: Readonly (Descending), Then by: Access (Ascending))
  - Fields (Sort by: Readonly (Descending), Then by: Access (Ascending))

测试验证:

设置完成后,按下Alt+R, C运行Code Cleanup,选择你的配置。你会发现区域内的字段现在会按照你设置的Readonly+Access规则重新排序,同时区域的结构完全保留,不会被合并或删除。

如果还有问题,你可以检查一下是不是布局里的Region节点优先级设置得不对,或者有没有其他布局规则覆盖了这个设置——一般来说,只要确保Region节点的「Process contents」是开启的,并且子节点的排序规则和外部一致,就能解决问题。

内容的提问来源于stack exchange,提问作者Collin Barrett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:33:47