Visual Studio C#语句折叠

Visual Studio C# statement collapsing

当编辑非常长的代码块(无论如何都应该重构,但这超出了这个问题的范围)时,我经常渴望能够像折叠函数块那样折叠语句块。也就是说,如果负号图标出现在用大括号括起来的代码大纲上,那就太好了。它似乎适用于函数、类、区域、名称空间、using,但不适用于条件块或迭代块。如果我能把像ifs、switches、foreaches这样的东西折叠起来,那就太棒了!

Google进入一点,我发现显然在VS中的C++概述允许这一点,但是C在VS中的概述没有。我不知道为什么。如果我选择C格式,即使是记事本++也会折叠,所以我不明白为什么Visual Studio不这样做。

是否有人知道将启用此行为的VS2008外接程序?或者某种隐藏的设置?

编辑添加:插入区域当然是一个选项,我已经想到了,但坦白地说,我不应该在已经用大括号包装的区域中包装东西…如果我要编辑现有的代码,我只需重构它,以便更好地分离关注点。(用新方法而不是区域包装;)


从Visual Studio 2017开始,语句折叠是内置的。

从Vs2010版本开始,有几个扩展对Vs2017之前的版本执行此任务:

  • C大纲
  • C大纲2012年(@msdn)
  • C大纲2013年(@msdn)
  • C大纲2015年(@msdn)
  • Visual Basic和C大纲视图

最后一个扩展只支持vs 2015和vs 2017,但它是最强大的。它支持折叠块内的语法着色,更具容错性和优化性。

If the extension doesn't seem to install after you used a browser to download it, try using the built-in Visual Studio extension manager.


我不知道加载项,但您提到了区域,我认为这样做没有什么错…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
}

编辑:回答问题的编辑:你是对的,在任何地方粘贴一堆区域都不理想,重构可能是解决问题的方法。但你似乎在寻找一种神奇的东西来为你"组织"代码,我认为这并不存在。


可以折叠Visual Studio中的特定文本块,但必须关闭自动大纲显示。

在代码窗口中单击鼠标右键并选择(大纲显示停止大纲显示)

然后,选择一些文本,右键单击并选择(大纲隐藏选择)

再次启用自动大纲显示时,自定义"区域"将不再折叠。


让我说些不同的话:按cx1〔0〕或在编辑>大纲>隐藏选择中它很有用。


只要将函数保持在同一代码层次级别,Visual Studio 2008就支持函数内部的区域。

1
2
3
4
5
6
7
8
9
10
11
12
13
#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
}


此功能已添加到Visual Studio 2010的C编辑器中。我找不到验证它是否真的被放入的源代码,但我记得在Dev10团队成员的一个博客上看到过它,讨论自beta 1以来的变化或其他什么。作为安慰,这里有一条微软的评论建议他们添加它。


在VS2017中,您可以突出显示代码的一部分,右键单击,大纲>隐藏选择。这将折叠代码并为突出显示的部分提供切换。


我在Visual Studio 2013中找到了它,并发现它非常有用。即使用在代码周围加上简单的大括号,它也能工作。}

分享之后,我发现有人也提到了这个链接。我也支持这个工具。

C Visual Studio 2013大纲工具


coderush将为您概述所有代码块。不确定它是否允许您展开/折叠块,但大纲显示是下一个最好的方法。我使用resharper而不是coderush,据我所知,它也不提供块崩溃:(


我将在这里补充一点,在Vs2010中,微软已经使用托管扩展框架(mef)添加了wpf修饰器功能,这将允许我们扩展源代码编辑器,以更好的方式组织它们,使之更易于阅读和访问。

例如,ScottGu在2008年的pdc上演示的总结评论可视化工具。

因此,希望开发人员有一个更好的明天:)


#区域,结束区域是智能选项。