Как в Visual Studio создать повторно используемый фрагмент кода (snippet)
Рассмотрим процесс создания повторно используемого фрагмента кода (сниппета) в Visual Studio 2017 на примере. Создадим сниппет на языке VB.NET, который объявляет объект типа BackgroundWorker() и создаёт для него методы DoWork(), ProcessChanged() и RunWorkerCompleted().
1Создание файла и написание кода сниппета
Прежде всего, нужно открыть директорию, в которой хранятся сниппеты нашей версии Visual Studio для того языка программирования, который нас интересует. Допустим, у меня Visual Studio 2017, сниппет я буду писать для Visual Basic .NET, и сниппеты для него хранятся в директории по умолчанию c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VB\Snippets\1049\.
В корне этой директории расположен файл SnippetIndex.xml, в котором содержится информация об имеющихся фрагментах кода. Нужно открыть этот файл и добавить информацию о сниппете, который мы сейчас создадим. Структура этого файла вполне очевидна:
- узлы <SnippetDir> – разделы, объединяющие фрагменты кода;
- узлы <SnippetSubDir> – подраздел, содержащий группы сниппетов, близкие по логике или функциональности друг другу.
Выберем подходящий раздел и подраздел. Если такого нет, то создадим новый. Например, в моём случае нет фрагментов кода, которые связаны с потоками исполнения и фоновыми обработчиками (background worker). Поэтому я создам такой подраздел в разделе «Базовые понятия: коллекции, типы данных, файловая система, математика» и назову его «Потоки, фоновая обработка»:
<SnippetSubDir> <OnOff>on</OnOff> <Installed>true</Installed> <Locale>1049</Locale> <DirPath>%InstallRoot%\Vb\Snippets\%LCID%\fundamentals\threads\</DirPath> <LocalizedName>Потоки, фоновая обработка</LocalizedName> </SnippetSubDir>
Для нового подраздела нужно создать новую директорию. Создадим в директории
По сути, сниппет представляет собой обычный XML-файл. И код сниппета, который мы поместим в файл backgroundworker.snippet, будет такой:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>BackgroundWorker</Title>
<Author>aave, Soltau.ru</Author>
<Description>Создание BackgroundWorker</Description>
<Shortcut>bw</Shortcut>
</Header>
<Snippet>
<Imports>
<Import>
<Namespace>System</Namespace>
</Import>
<Import>
<Namespace>System.ComponentModel</Namespace>
</Import>
</Imports>
<Code Language="VB" Kind="method body">
<![CDATA[
Private WithEvents Worker As BackgroundWorker
Private Sub Worker_DoWork(sender As Object, e As DoWorkEventArgs) Handles worker.DoWork
End Sub
Private Sub Worker_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles worker.ProgressChanged
End Sub
Private Sub Worker_Completed(sender As Object, e As RunWorkerCompletedEventArgs) Handles worker.RunWorkerCompleted
End Sub
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Думаю, структура файла сниппета настолько очевидна, что комментарии излишни.
2Использование созданного фрагмента кода (сниппета)
Откроем диспетчер фрагментов кода. Это можно сделать через меню Visual Studio: Средства Диспетчер фрагментов кода…. А можно воспользоваться комбинацией клавиш, или «аккордом», как называют это в Microsoft, Ctrl+K, Ctrl+B.
Идём в раздел «Базовые понятия: коллекции, типы данных, файловая система, математика», видим там наш подраздел threads, а в нём фрагмент кода под названием BackgroundWorker.
Закроем диспетчер фрагментов кода и перейдём в редактор кода Visual Studio.
Введём символ ?, а затем клавишу Tab, и откроется всплывающее окно, в котором можно выбрать нужный фрагмент кода. По нажатиям клавиш Tab, Backspace и стрелок происходит навигация по сниппетам.
Окно сниппетов можно вызвать также по нажатию сочетаний клавиш Ctrl+K, Ctrl+X.