Visual Studio C#语句折叠

Gra*_*ank 180 c# ide text-editor outlining visual-studio-2008

当编辑真正长的代码块时(无论如何它肯定会被重构,但这超出了这个问题的范围),我经常渴望能够折叠语句块,就像可以折叠功能块一样.也就是说,如果在括号中包含的所有内容的代码轮廓上出现减号图标,那将会很棒.它似乎出现在函数,类,区域,命名空间和使用中,但不适用于条件或迭代块.如果我可以崩溃像ifs,switch,foreaches这样的东西,那将是太棒了!

谷歌搜索到这一点,我发现显然在VS中的C++概述允许这样但在VS中的C#概述却没有.我真的不明白为什么.如果我选择C#格式化,即使是notepad ++也会崩溃,所以我不明白为什么Visual Studio没有.

有没有人知道VS2008加载项会启用此行为?或者某种隐藏的设置呢?

编辑添加:插入区域当然是一个选项,它确实已经发生在我身上,但坦率地说,我不应该把事情包裹在已经用括号括起来的区域......如果我要编辑现有的代码,我只是重构它,以便更好地分离关注点.(用新方法代替区域"包装";)

Sky*_*ade 266

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

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

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

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

  • `Ctrl M + O`不再有效.我怎样才能解决这个问题? (3认同)
  • 我们甚至需要Visual Studio的这个插件这一事实令人难以置信.这应该是标准行为.善良. (3认同)
  • [这是VS 2013版本:](http://visualstudiogallery.msdn.microsoft.com/6c3c5dec-1534-4c42-81b1-cfd4615fd0e9) (2认同)

Kon*_*Kon 21

我不知道加载项,但你提到了区域,我认为做这样的事情并没有错...

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
}
Run Code Online (Sandbox Code Playgroud)

编辑:回答问题的编辑:你是对的,到处都是一堆地区并不理想,重构可能就是要走的路.但似乎你正在寻找一些神奇的东西来为你"组织"代码,我认为不存在.

  • 他的代码是正确的; 你不仅限于你可以定义这样的区域(只要你没有在开头的范围之外结束) (10认同)
  • 请看原始问题的编辑; 开发人员需要手动操作(即使使用一次或两次点击区域包装快捷方式)也无法真正回答自动完成此操作的问题/愿望 (3认同)

Mat*_*ell 19

您可以在visual studio中折叠特定的文本块,但必须关闭自动轮廓.

右键单击代码窗口并选择(Outlining | Stop Outlining)

然后,选择一些文本,右键单击并选择(概述|隐藏选择)

当您再次打开自动大纲时,您的自定义"区域"将不再崩溃.

  • 很公平.我希望通过这个问题找到一种方法来将这些块添加到自动轮廓中,因为它对于它们不是真的没有意义. (3认同)