Фрагменты кода в Visual Studio 2010 (Snippet)
Visual Studio позволяет разработчикам сохранить фрагменты кода, которые могут использоватся позже. Это экономит время от перепечатывания кусков кода, которые часто используются. Я также вижу это очень полезно тогда, когда надо показать во время презентации код. Вместо того, чтобы все печатать, я считаю, что гораздо проще просто добавить код, используя фрагменты кода.
VS 2010 имеет улучшеный функционал, и она упрощает создание фрагментов кода. В ней есть два типа фрагментов:
Расширяемые фрагменты – вставлены в позицию курсора
- Обтекаемые фрагменты вокруг выделенного кода
- Создание собственного фрагмента
Давайте попробуем создать расширяемый фрагмент try-catch-finally блок:
Вставте новый XML файл в проект и назовите его TryCatchFinally.snippet. Убедитесь, что имя файла заканчивается на .snippet.
Щелкните правой кнопкой мыши в окне редактора и выберите Insert Snippet->Snippet.

Так создается основной фрагмент 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 для появления выпадающего меню
Вы также можете нажать Ctrl+K и Ctrl+X для вызова меню Insert Snippet, как показано ниже

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

Источник здесь
А как сделать сниппет для surraund with??
Что имеется в виду для surraound with?