Завершение работы Visual Studio С#

При редактировании действительно длинных блоков кода (которые обязательно должны быть реорганизованы в любом случае, но выходящих за рамки этого вопроса), я часто жаждет возможности свернуть блоки операторов, как можно свернуть функциональные блоки. То есть было бы здорово, если бы значок минуса отображался в схеме кода для всего, заключенного в фигурные скобки. Кажется, он появляется для функций, классов, областей, пространств имен, приложений, но не для условных или итеративных блоков. Было бы замечательно, если бы я мог разрушить такие вещи, как ifs, переключатели, предвидения, такие вещи!

Вхождение в это немного, я обнаружил, что, по-видимому, С++, излагающий в VS, позволяет это, но С#, выделяющий в VS, не работает. Я не понимаю почему. Даже блокнот ++ будет таким образом сбрасываться, если я выберу форматирование на С#, поэтому я не понимаю, почему Visual Studio не делает.

Кто-нибудь знает о надстройке VS2008, которая позволит это поведение? Или какие-то скрытые настройки для него?

Отредактировано для добавления: вставка областей - это, конечно, вариант, и это уже произошло со мной, но, честно говоря, мне не нужно было обертывать вещи в регионе, который уже завернут в фигурные скобки... если бы я шел чтобы отредактировать существующий код, я бы просто реорганизовал его, чтобы иметь возможность разделить озабоченность в любом случае. ( "обертывание" новыми методами вместо регионов;)

Ответ 1

Начиная с Visual Studio 2017, сворачивание операторов встроено.

Существует несколько расширений, которые выполняют эту задачу для версий VS до 2017 года, начиная с версии VS 2010:

Последнее расширение поддерживает только VS 2015 и VS 2017, но это самый мощный.
Он поддерживает синтаксическую раскраску внутри свернутых блоков, более отказоустойчив и оптимизирован.

Если расширение не установлено после использования браузера для его загрузки, попробуйте использовать встроенный диспетчер расширений Visual Studio.

Ответ 2

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

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
}

РЕДАКТИРОВАТЬ: В ответ на вопрос EDIT: вы правы, придерживание кучи регионов во всем мире не является идеальным, и рефакторинг - это, вероятно, путь. Но кажется, что вы ищете что-то волшебное, которое "организует" код для вас, и я не думаю, что он существует.

Ответ 3

Вы можете свернуть отдельные блоки текста в визуальной студии, но вам нужно отключить автоматическое выделение.

Щелкните правой кнопкой мыши в окне вашего кода и выберите (Очертить | Остановить выделение)

Затем выберите текст, щелкните правой кнопкой мыши и выберите (Обводка | Скрыть выделение)

Когда вы снова включите автоматическое выделение, ваши пользовательские "регионы" больше не будут рушиться.

Ответ 4

Visual Studio 2008 поддерживает регионы внутри функций, пока вы держите их на одном и том же уровне кода

#region Won't work
for(int i = 0; i<Count; i++)
{
//do something
#endregion
}

for(int i=0; i<Count; i++)
{
#region Works fine
//do lots of stuff
#endregion
}

Ответ 5

Эта функция была добавлена ​​в редактор Visual Studio 2010 С#. Я не могу найти источник, подтверждающий, что он действительно был внесен, но я помню, что видел его в одном из блогов группы разработчиков Dev 10, рассказывающих об изменениях с момента создания Beta 1 или что-то в этом роде. Как утешение, вот один комментарий Microsoft, предлагающий им добавить его.

Ответ 6

Позвольте мне сказать что-то другое: нажмите (ctrl+m,ctrl+h) или в редакции > выделить > скрыть выбор это так полезно.

Ответ 7

Я добавлю здесь, что в VS 2010 Microsoft добавила возможности Adorner WPF с использованием Managed Extensibility Framework (MEF), это позволит нам расширить редактор исходного кода, чтобы организовать их гораздо лучше, чтобы сделать его более читаемым и доступным.

Например, визуализатор итоговых комментариев, который Скотт Гу продемонстрировал на PDC 2008.

С нетерпением ожидаем лучшего завтра для разработчиков:)

Ответ 8

Coderush отобразит все блоки кода для вас. Не уверен, что это позволяет вам развернуть/свернуть блоки, но наметить это - лучшая вещь. Я использую resharper вместо coderush, который, насколько я знаю, не обеспечивает блокировку блока: (

Ответ 9

Я нашел это для Visual Studio 2013 и нашел, что это очень полезно. Он работает, даже если вы поместите простые фигурные скобки вокруг своего кода с помощью {.....}

После обмена я нашел, что кто-то еще упомянул эту ссылку. Мое голосование также за этот инструмент.

Инструмент выделения С# для Visual Studio 2013

Ответ 10

# region, # endregion - это умный вариант.