隐藏Visual Studio中的区域

我知道VS代码折叠问题是一个老板栗,但我在我浏览过的所有其他讨论中都找不到这个:

我们有一个C#团队,一些爱区域和其他人讨厌他们,我们似乎没有多少中间立场可以合作。

是否有VS的插件或插件可以“隐藏”这些区域? 那些想要它们的人会看到它们正常,但安装加载项的人和查看.cs文件的区域就不存在,好像它们不存在一样。

我可以看到,在移动代码时可能会出现问题,这可能会导致某些方法出现在错误区域之内或之外,但这可能是团队满意的权衡…

我讨厌地区(我的团队喜欢他们)并且惊讶地发现没有人写过扩展来让他们变得更好。 我终于自己写了一个名叫I Hate #Regions

让#regions减少(免费):

http://visualstudiogallery.msdn.microsoft.com/0ca60d35-1e02-43b7-bf59-ac7deb9afbca

  • 打开文件时自动展开区域
  • 可选择防止区域折叠(但仍然可以折叠其他代码)
  • 为#region / #end区域线提供更小,更轻的背景,使它们不那么明显(也是一个选项)
  • 适用于C#和VB

区域工具截图

有快捷键来处理它们:

 Ctrl + M,Ctrl + M折叠或展开您当前所在的块。
 Ctrl + M,Ctrl + O折叠文件中的所有块
 Ctrl + M,Ctrl + L展开文件中的所有块
 Ctrl + M,Ctrl + P停止概述模式。  (Ctrl + M,Ctrl + O恢复) 

请参阅代码折叠问题

就个人而言,我编写了一个VS宏(工具>宏)来扩展文件打开的所有区域。

老实说,我不知道这样的插件。 但是,使用VSTO ,自己编写一个很容易。

这有点……肮脏,可能有副作用但是:

工具 – >选项 – >环境 – >字体和颜色 – >预处理器关键字将前景色和背景色更改为白色(或任何默认背景)。

您不会看到其他预处理器关键字。

对于VS 2008用户,您可以以编程方式(通过宏)停止概述和重新启动它。 我在http://weblogs.asp.net/rweigelt/archive/2003/07/06/9741.aspx找到了这段代码

Imports EnvDTE ' Expands all regions in the current document Sub ExpandAllRegions() DTE.ExecuteCommand("Edit.StopOutlining") DTE.ExecuteCommand("Edit.StartAutomaticOutlining") End Sub 

以上适用于C#IDE; 出于某种原因,VB的IDE在明确告知时不会删除区域的大纲。 希望这可以帮助!

– 附加编辑:

这是一个适用于Visual Studio 2008中的Visual Basic .NET。它有点蛮力,但想法是评论所有#region标记,扩展轮廓。 下一步取消注释它们,将它们恢复到原始状态(严格来说不是真的……可能在代码的其他部分中使用#region的流氓)。 此代码也不会将“查找和替换”对话框返回到其原始状态。 有了这些警告,这是将执行这项工作的宏模块:

 Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports System.Diagnostics Public Module MacroMod01 Sub ExpandAllRegions() ' comment out all #region occurances DTE.ExecuteCommand("Edit.Replace") DTE.Find.Action = vsFindAction.vsFindActionReplaceAll DTE.Find.FindWhat = "#region" DTE.Find.ReplaceWith = "'#region" DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument DTE.Find.MatchCase = False DTE.Find.MatchWholeWord = False DTE.Find.MatchInHiddenText = True DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone DTE.Find.Action = vsFindAction.vsFindActionReplaceAll DTE.Find.Execute() ' uncomment all #region occurances DTE.ExecuteCommand("Edit.Replace") DTE.Find.Action = vsFindAction.vsFindActionReplaceAll DTE.Find.FindWhat = "'#region" DTE.Find.ReplaceWith = "#region" DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument DTE.Find.MatchCase = False DTE.Find.MatchWholeWord = False DTE.Find.MatchInHiddenText = True DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone DTE.Find.Action = vsFindAction.vsFindActionReplaceAll DTE.Find.Execute() 'close the find 'n replace dialog DTE.Windows.Item("{CF2DDC32-8CAD-11D2-9302-005345000000}").Close() End Sub End Module 

在VS2008中,可能还有一些其他方法可以实现VB。 我会发现它们发布。

我认为任何讨厌地区的人都很有趣。 我非常喜欢Regions,我写了一个名为Regionizer的程序,它是一个位于http://regionizer.codeplex.com的开源项目

我有老板和一些讨厌他们的团队成员,但我的工具按字母顺序组织所有代码,因此方法按字母顺序排序在方法区域中,属性在属性区域中排序,事件在事件区域中排序。

尝试查找没有此工具(或区域)的代码就是我所说的Spaghetti Code。

我一直在寻找一种简单的方法来折叠和扩展所有区域,并且MS告诉我们这些区域是.suo文件的一部分(与项目或解决方案同名)并且没有一种简单的方法来获取句柄在这些地区反对他们自己。

我已经搜索了整个DTE并且我没有找到折叠所有区域或扩展所有区域的方法,我将尝试宏代码并查看它是否有效。

将很快发布更新。