在 Visual Studio 中隐藏区域
-
21-08-2019 - |
题
我知道 VS 代码折叠问题是一个老栗子,但我在我浏览过的所有其他讨论中都找不到这个问题:
我们有一个由 C# 人员组成的团队,有些人喜欢区域,有些人讨厌它们,而且我们似乎没有太多中间立场可以合作。
VS 是否有一个插件或加载项可以“隐藏”区域?这样那些想要它们的人就会像平常一样看到它们,但安装加载项并查看 .cs 文件的人却看不到这些区域,就好像它们不存在一样。
我可以看到,在移动代码时这可能是一个问题,它可能会导致某些方法在错误区域之内或之外出现问题,但这可能是团队满意的权衡...
解决方案
我讨厌区域(我的团队喜欢它们),并且惊讶地发现没有人编写扩展来使它们变得更好。我终于自己写了一篇叫做 我讨厌#Regions:
让#regions 变得更少(免费):
http://visualstudiogallery.msdn.microsoft.com/0ca60d35-1e02-43b7-bf59-ac7deb9afbca
- 打开文件时自动展开区域
- 可以选择防止区域折叠(但仍然能够折叠其他代码)
- 给 #region / #end 区域线一个更小、更亮的背景,这样它们就不太引人注目(也是一个选项)
- 适用于 C# 和 VB
其他提示
有快捷键来处理它们:
Ctrl+M, Ctrl+M Collapse or expand the block you're currently in. Ctrl+M, Ctrl+O Collapse all blocks in the file Ctrl+M, Ctrl+L Expand all blocks in the file Ctrl+M, Ctrl+P Stop outlining mode. (Ctrl+M, Ctrl+O resumes)
请参阅的问题代码折叠
我个人写一个VS宏(工具>宏)以展开文件上打开的所有区域。
我不知道这样的任何插件,诚实。然而,随着 VSTO ,它很容易自己写一个。
这是有些...单薄,并且可以具有副作用但:
工具 - >选项 - >环境 - >字体和颜色 - >预处理器关键字 改变前景和背景颜色为白色(或任何默认背景)。
您不会看到其他预处理关键字虽然。
有关VS 2008米的用户,则可以停止概述和编程重新启动它(通过宏)。我发现这个代码在 http://weblogs.asp.net/ rweigelt /存档/ 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 Basic .NET在Visual Studio 2008中的工作这是一个有点蛮力,但这个想法是评论所有的#区域标记,扩大了轮廓。下一步取消注释它们,将它们恢复到原来的状态(并不完全正确......可以在代码的其他部分#地区的流氓应用)。此代码不返回查找和替换对话框回到它的原始状态,无论是。与这些警告,这是一个将执行该杂项宏模块:
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
我的老板和一些团队成员讨厌他们,但我的工具按字母顺序组织所有代码,因此方法在方法区域中按字母顺序排序,属性在属性区域中排序,事件在事件区域中排序。
尝试在没有此工具(或区域)的情况下查找代码就是我所说的意大利面条代码)。
我一直在寻找一种简单的方法来折叠和展开所有区域,并被 MS 告知这些区域是 .suo 文件的一部分(与项目或解决方案同名),并且没有一种简单的方法来获取句柄各地区反对他们自己。
我已经搜索了整个 DTE,但没有找到折叠所有或展开所有区域的方法,我将尝试宏代码,看看它是否有效。
很快就会发布更新。