Автоматическое добавление областей в код в 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
например, область под названием предварительный просмотр показано здесь: