Автоматическое добавление областей в код в Visual Studio

моя команда абсолютно любит использовать регионы, и с учетом этого она в значительной степени стала стандартом де-факто в нашем коде. Недавно я понял, что мне надоело писать или ctrl+c / ctrl+v'ING каждый раз, когда я создаю класс, метод тестирования и т. д...

мне было интересно, возможно ли (через макросы или некоторые другие функции), чтобы Visual Studio автоматически добавляла их в ваш код.

например, если я добавлю новый файл класса в свой проект, может вы выполняете какое-то волшебство, чтобы visual studio создавала файл как:

namespace Test
{
    class MyClass
    {
        #region ------------ members --------------
        #endregion

        #region ------------ properties --------------
        #endregion

        #region ------------ methods --------------
        #endregion
    }
}

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

Итак, когда я иду, чтобы создать новый метод тестирования

[TestMethod]
public void WhenCondition_WillProduceExpectedResult()
{
}

Visual Studio автоматически добавит эти две области метода, такие как:

[TestMethod]
public void WhenCondition_WillProduceExpectedResult()
{
   #region ------------- set up -------------
   #endregion 

   #region ------------- run test -------------
   #endregion 
}

не уверен, что это можно сделать, и если это возможно, будет ли это через vs-макрос или расширение. Любая помощь очень ценится!

6 ответов


Вы можете создать простой фрагмент кода следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Simple</Title>
      <Shortcut>simple</Shortcut>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>name</ID>
          <ToolTip>Replace with the name of the action</ToolTip>
          <Default>Action</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
        public void $name$()
        {
            #region ------------- set up -------------
            #endregion 

            #region ------------- run test -------------
            #endregion 
        }
        ]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

Сохраните этот файл в C:\Users\<your_user>\Documents\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets.

теперь вам просто нужно снова открыть Visual Studio, введите "простой" в класс и дважды нажмите клавишу Tab.


два способа, которые я знаю:

создайте фрагмент в соответствии с этим руководство MSDN.

загрузка расширения Visual Studio Инструменты Повышения Производительности Мощность который имеет функцию "Surround". Это окружает сделанный пользователем выбор с выбранным фрагментом, например #region #endregion или оператор if.


Не знаю, почему так много людей выступают против регионов, они помогают мне очень легко классифицировать мой код. Я использую макрос, размещенный на одной из кнопок клавиатуры, который автоматически вставляет для меня области. Один совет, который я могу дать вам, - это поместить небольшую задержку между каждым нажатием клавиши, если это возможно, потому что VS иногда пропускает символы в противном случае.

надеюсь, что это помогает!


использовать следующий фрагмент кода

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>#Classregion</Title>
      <Shortcut>#Classregion</Shortcut>
      <Description>Code snippet for #Classregion</Description>
      <Author>Author Name</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>name</ID>
          <ToolTip>Region name</ToolTip>
          <Default>MyRegion</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
        #region ------------- Members ---------------
        $selected$ $end$
    #endregion

  #region --------------- Properties ---------------
        $selected$ $end$
    #endregion

  #region --------------- Methods ---------------
        $selected$ $end$
    #endregion
    ]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

сохранить его под C:\Users\\Documents\Visual Studio 2010\фрагменты кода\Visual C#\мои фрагменты кода

позже он будет доступен в коде C#, щелкнув правой кнопкой мыши > вставить фрагмент > мои фрагменты кода > #Classregion


и я согласен, что регионы a-плохая идея, но для каждого своя.

возможно, вы захотите взглянуть на NArrange.


Если у вас есть Resharper, то окно структуры файлов очень удобно для управления регионами, позволяя простым перетаскиванием перемещать блоки методов/свойств и т. д. вокруг. Он показывает ваши регионы (которые складываются) и синхронизируется с основным представлением кода:

https://www.jetbrains.com/help/resharper/Reference__Windows__File_Structure_Window.html

например, область под названием предварительный просмотр показано здесь:

Here