Visual Studio C # оператор рушится - PullRequest
178 голосов
/ 13 ноября 2008

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

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

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

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

Ответы [ 11 ]

265 голосов
/ 04 марта 2011

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

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

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

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

21 голосов
/ 13 ноября 2008

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

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
}

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

19 голосов
/ 13 ноября 2008

Вы можете свернуть определенные блоки текста в пределах Visual Studio, но вам нужно отключить автоматическое выделение.

Щелкните правой кнопкой мыши в окне кода и выберите (Outlining | Stop Outlining)

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

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

3 голосов
/ 11 апреля 2014

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

3 голосов
/ 13 ноября 2008

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
}
2 голосов
/ 20 июля 2009

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

0 голосов
/ 19 января 2018

В VS2017 вы можете выделить часть кода, щелкнуть правой кнопкой мыши, Outlining> Hide selection. Это свернет код и обеспечит переключение на выделенный раздел.

0 голосов
/ 27 августа 2014

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

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

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

0 голосов
/ 06 августа 2010

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

0 голосов
/ 18 июля 2009

# регион, # endregion - разумный вариант.

...