Подтвердить что ты не робот

Скрытие областей в Visual Studio

Я знаю, что проблемы с кодом VS - это старый каштан, но я не смог найти его во всех других обсуждениях, которые я просматривал:

У нас есть команда парней из С#, некоторые любовные регионы и другие ненавидят их, и у нас, похоже, нет большого количества средств для работы.

Есть ли плагин или надстройка для VS, которая просто "скроет" регионы? Так что те, кто их хочет, будут видеть их как обычно, но люди, которые устанавливают надстройку и просматривают файл .cs, просто не существуют области, как будто их не существует.

Я вижу, что это может быть проблемой при перемещении кода вокруг него, что может вызвать проблемы с определенными методами, находящимися в или за пределами неправильного региона, но это может быть компромисс, которым команда довольна...

4b9b3361

Ответ 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, и я не нашел способ свернуть все или развернуть все регионы, я собираюсь попробовать код макроса и посмотреть, работает ли он.

В ближайшее время опубликует обновление.