VisualStudioC # 语句崩溃

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

我在谷歌上搜索了一下,发现 VS 中的 C + + 大纲显然允许这样做,但是 VS 中的 C # 大纲却不允许。我不明白为什么。如果我选择 C # 格式化,即使是记事本 + + 也会崩溃,所以我不明白为什么 Visual Studio 不这样做。

是否有人知道一个 VS2008插件将启用这种行为?或者是某种隐藏的设置?

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

83521 次浏览

我不了解外接程序,但是你提到了区域,我认为这样做没有什么错..。

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
}

编辑: 作为对问题的回应,编辑: 你是对的,在任何地方粘贴一堆区域并不理想,重构可能是正确的选择。但似乎你正在寻找一些神奇的东西,将“组织”为您的代码,我不认为这存在。

VisualStudio2008支持函数内部的区域,只要将它们保持在相同的代码层次结构级别中

#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
}

您可以在视觉工作室中折叠特定的文本块,但是您必须关闭自动大纲。

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

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

当您再次打开自动大纲显示时,您的自定义“区域”将不再崩溃。

在这里我要补充的是,在 VS 2010中,微软使用管理扩展性框架(MEF)增加了 WPF 装饰器功能,这将允许我们扩展源代码编辑器,以更好的方式组织它们,使其更具可读性和可访问性。

例如,Scott Gu 在2008年 PDC 演示的摘要注释可视化工具。

所以期待开发者有一个更好的明天:)

# region # endregion 是明智的选择。

这个特性已经被添加到 VisualStudio2010的 C # 编辑器中。我找不到确认它实际上已经被放入的源代码,但我记得在 Dev 10团队成员的一个博客上看到过它,讨论自 Beta 1或其他什么以来的变化。作为一种安慰,这里有一条微软的评论暗示他们想要添加它。

Coderush 将为您概述所有代码块。不确定它是否允许您展开/折叠块,但轮廓线是次好的选择。我使用 resharper 代替 coderush,据我所知,它也不提供块崩溃: (

从 VisualStudio2017开始,内置了语句折叠。

对于2017年之前版本的 VS,有几个扩展可以执行这项任务,从 VS 2010版本开始:

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

如果在使用浏览器下载该扩展后似乎没有安装,请尝试使用内置的 VisualStudio 扩展管理器。

让我说一些不同的东西: 按 (ctrl+m,ctrl+h)或在编辑 > 大纲 > 隐藏选择 它是如此有用。

我发现这对 VisualStudio2013非常有帮助。即使在代码周围放置简单的大括号,也可以使用{ ... ... }

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

用于 VisualStudio2013的 C # 大纲工具

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

在 Visual Studio 2019中,如果你想折叠 catchfinally中的大括号,折叠 switchcasedefault,折叠多行 comments,等等。

尝试使用 C # 2019年大纲