Фрагменты кода в Visual Studio 2010 (Snippet)

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

VS 2010 имеет улучшеный функционал, и она упрощает создание фрагментов кода. В ней есть два типа фрагментов:
Расширяемые фрагменты – вставлены в позицию курсора

  • Обтекаемые фрагменты вокруг выделенного кода
  • Создание собственного фрагмента


Давайте попробуем создать расширяемый фрагмент try-catch-finally блок:
Вставте новый XML файл в проект и назовите его TryCatchFinally.snippet. Убедитесь, что имя файла заканчивается на .snippet.
Щелкните правой кнопкой мыши в окне редактора и выберите Insert Snippet->Snippet.

Рис. 1 Добавление снипета


Рис. 2 Добавление снипета


Так создается основной фрагмент XML шаблона, как показано ниже:

<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <Header>
    <Title>title</Title>
    <Author>author</Author>
    <Shortcut>shortcut</Shortcut>
    <Description>description</Description>
    <SnippetTypes>
      <SnippetType>SurroundsWith</SnippetType>
      <SnippetType>Expansion</SnippetType>
    </SnippetTypes>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>name</ID>
        <Default>value</Default>
      </Literal>
    </Declarations>
    <Code Language="XML">
      <![CDATA[<test>
      <name>$name$</name>
      $selected$ $end$</test>]]>
    </Code>
  </Snippet>
</CodeSnippet>

Как видите, по умолчанию, шаблон содержит оба типа фрагмента. Поскольку я создаю расширяемый фрагмент, то надо избавится от тега SurroundsWith.

Поменяйте title на Try Catch Finally, shortcut на trycf и description на Adds a try-catch-finally block.

Тег Literal позволяет определить редактируемые значения, которые есть в фрагменте. В фрагменте try-catch-finally, мы хотим позволить пользователю изменять тип исключения которое будет ловится. ID теги это имена редактируемых значений, измените его на ExceptionName. Тег Default определяет значение по умолчанию для нашего редактируемого поля. Я хочу ловить все исключения, то поменяйте значение тега Default на Exception.

И, наконец, секция кода содержит то, что будет добавлено, когда фрагмент будет вставлен. Измените язык на CSharp, а тело на следующее:

<![CDATA[
try
{

}
catch($ExceptionName$)
{

}
finally
{

}
]]>

Окончательный вариант файла TryCatchFinally.snippet показано ниже.

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <Header>
    <Title>Try Catch Finally</Title>
    <Author>Author</Author>
    <Shortcut>trycf</Shortcut>
    <Description>Adds a try-catch-finally block</Description>
    <SnippetTypes>
      <SnippetType>Expansion</SnippetType>
    </SnippetTypes>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>ExceptionName</ID>
        <Default>Exception</Default>
      </Literal>
    </Declarations>
    <Code Language="CSharp">
      <![CDATA[
      try
{

}
catch($ExceptionName$)
{

}
finally
{

}
      ]]>
    </Code>
  </Snippet>
</CodeSnippet>

Более подробную информацию о схеме XML, смотрите на MSDN code snippets Schema Reference.

Загрузка фрагментов в Visual Studio

Есть два способа вставить фрагмент выше в Visual Studio.

Наиболее простым способом является перемещение .snippet файлов в VS 2010 папку Code Snippets. Путь по умолчанию такой – C:\Users\User\Documents\Visual Studio 2010\Code Snippets\. Эта папка имеет подпапки, имена которых зависят от языка, для которого вы делаете фрагмент кода. Для моего примера, фрагмент кода подходит для Visual C#. Как только вы туда его положите, VS 2010 автоматически его подхватит без перезагрузки.

Второй способ заключается в импортировании .snippet файла в Visual Studio.

  • В Visual studio идите в меню Tools->Code Snippets Manager (Ctrl+K,Ctrl+B). Так вызовится Snippets Manager
  • Нажмите кнопку Import и перейдите в путь, где был сохранен .snippet файл и выберите его
  • Нажмите OK

Использование фрагментов кода

Введите имя фрагмента и нажмите Tab для появления выпадающего меню

Рис. 3 Использование снипета


Вы также можете нажать Ctrl+K и Ctrl+X для вызова меню Insert Snippet, как показано ниже

Рис. 4 Использование снипета


Мы можем перейти в My Code Snippets и выбрать TryCatchFinally, что мы только что добавили:

Рис. 5 Использование снипета


Источник здесь

2 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_good.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif