Рейтинг@Mail.ru
Создание сниппетов в VS 2017
Создание сниппетов в VS 2017

Как в Visual Studio создать повторно используемый фрагмент кода (snippet)

автор:
Be the first to comment! Программирование
Print Friendly, PDF & Email

Рассмотрим процесс создания повторно используемого фрагмента кода (сниппета) в 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>

Для нового подраздела нужно создать новую директорию. Создадим в директории …\fundamentals\ папку threads, как мы и указали в коде выше. Переходим в эту папку и создаём файл сниппета. Назовём его, например, backgroundworker.snippet. Название не имеет значения, оно нигде не прописывается: Visual Studio будет искать все фрагменты кода, которые найдёт в этой директории.

Созданный файл сниппета в директории фрагментов кода
Созданный файл сниппета в директории фрагментов кода

По сути, сниппет представляет собой обычный 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.

Запуск диспетчера фрагментов кода через меню Visual Studio
Запуск диспетчера фрагментов кода через меню Visual Studio

Идём в раздел «Базовые понятия: коллекции, типы данных, файловая система, математика», видим там наш подраздел threads, а в нём фрагмент кода под названием BackgroundWorker.

Созданный сниппет появился в общем списке фрагментов кодаСозданный сниппет появился в общем списке фрагментов кода

Закроем диспетчер фрагментов кода и перейдём в редактор кода Visual Studio.

Введём символ ?, а затем клавишу Tab, и откроется всплывающее окно, в котором можно выбрать нужный фрагмент кода. По нажатиям клавиш Tab, Backspace и стрелок происходит навигация по сниппетам.

Вставка фрагмента кода в редакторе Visual Studio
Вставка фрагмента кода в редакторе Visual Studio

Окно сниппетов можно вызвать также по нажатию сочетаний клавиш Ctrl+K, Ctrl+X.

Last modified onВторник, 26 Март 2019 18:49 Read 6001 times
Ключевые слова: :

Поблагодарить автора:

Поделиться

Print Friendly, PDF & Email

Leave a comment