Скрытие областей в Visual Studio
Я знаю, что проблемы с кодом VS - это старый каштан, но я не смог найти его во всех других обсуждениях, которые я просматривал:
У нас есть команда парней из С#, некоторые любовные регионы и другие ненавидят их, и у нас, похоже, нет большого количества средств для работы.
Есть ли плагин или надстройка для VS, которая просто "скроет" регионы? Так что те, кто их хочет, будут видеть их как обычно, но люди, которые устанавливают надстройку и просматривают файл .cs, просто не существуют области, как будто их не существует.
Я вижу, что это может быть проблемой при перемещении кода вокруг него, что может вызвать проблемы с определенными методами, находящимися в или за пределами неправильного региона, но это может быть компромисс, которым команда довольна...
Ответы
Ответ 1
Я ненавижу регионы (моя команда их любит) и с удивлением обнаружила, что никто не написал расширение, чтобы сделать их лучше. Я, наконец, написал один из них: Я ненавижу #Regions:
Сделать #области меньше (бесплатно):
http://visualstudiogallery.msdn.microsoft.com/0ca60d35-1e02-43b7-bf59-ac7deb9afbca
- Автоматическое разворачивание областей при открытии файла
- Опционально предотвращать свертывание регионов (но все же иметь возможность свернуть другой код)
- Дайте строкам региона #region/#end меньший, более легкий фон, чтобы они были менее заметными (также опция).
- Работает на С# и VB
![Region Tool Screenshot]()
Ответ 2
Есть горячие клавиши для работы с ними:
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)
Смотрите проблему со свертыванием кода
Ответ 3
Лично я пишу макрос VS (Инструменты> Макрос), чтобы раскрыть все регионы при открытии файла.
Ответ 4
Я не знаю ни одного такого плагина, честно говоря. Однако с VSTO его очень легко написать самостоятельно.
Ответ 5
Это несколько... неряшливый и может иметь побочные эффекты, но:
Инструменты → Параметры → Среда → Шрифты и цвета → Ключевое слово препроцессора
Измените цвета переднего плана и фона на белый (или любой фон по умолчанию).
Вы не увидите других ключевых слов препроцессора.
Ответ 6
Для пользователей 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
Вышеупомянутые работы для С# IDE; по какой-то причине VB IDE не удаляет изложение с областями, когда явно сказано. Надеюсь, это поможет!
- добавлено редактирование:
Вот тот, который работает для Visual Basic.NET в Visual Studio 2008. Это немного грубая сила, но идея состоит в том, чтобы прокомментировать все маркеры #region, расширяя контур. Следующий шаг отменяет их, возвращая их в исходное состояние (не строго верно... может иметь использование rague в #region в других частях кода). Этот код не возвращает диалоговое окно Find and Replace обратно в исходное состояние. С этими оговорками это макромодуль, который будет выполнять эту работу:
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
Для VB в VS2008 может быть несколько других способов. Я отправлю сообщение, когда найду их.
Ответ 7
Обновление для Visual Studio 2017:
Если вы снимите флажок "Параметры" → "Текстовый редактор" → "С#" → "Дополнительно" → войдите в режим контура при открытии файлов, тогда VS просто отобразит расширенные области при открытии нового файла.
![VS options: don't collapse region]()
Ответ 8
Я думаю, что это забавно, кто ненавидит Регионы. Я так сильно обожаю Регионы, что написал программу под названием Regionizer, которая представляет собой проект с открытым исходным кодом, расположенный в http://regionizer.codeplex.com
У меня были боссы и некоторые члены команды, которые их ненавидят, но мой инструмент упорядочивает весь код в алфавитном порядке, поэтому методы сортируются по алфавиту в области "Методы", свойства сортируются в области свойств, а события сортируются в области "События".
Попробуйте найти код без этого инструмента (или регионов) - это то, что я называю кодом спагетти).
Я искал простой способ свернуть и развернуть все регионы и рассказал MS, что регионы являются частью файла .suo(то же имя, что и проект или решение), и нет простого способа получить дескриптор в регионах, чтобы они сами были.
Я искал все через DTE, и я не нашел способ свернуть все или развернуть все регионы, я собираюсь попробовать код макроса и посмотреть, работает ли он.
В ближайшее время опубликует обновление.