Справочник по схеме фрагментов кода

Фрагменты кода — это предварительно подготовленные фрагменты кода, готовые к вставке в приложение. Вы можете повысить производительность и надежность с помощью фрагментов кода, чтобы сократить время, затраченное на ввод повторяющегося кода или поиск примеров.

В этой статье содержится ссылка на схему XML кода IntelliSense Visual Studio. Схему можно использовать для создания собственных фрагментов кода и добавления их в фрагменты кода, которые visual Studio уже включает.

Элемент Assembly

Задает имя сборки, на которую ссылается фрагмент кода.

В качестве текстового значения элемента Assembly выступает либо понятное текстовое имя сборки, например System.dll, либо строгое имя сборки, например System,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa323c18d4fb1.

<Assembly>
    AssemblyName
</Assembly>
Родительский элемент Description
Элемент Reference Содержит сведения о ссылках на сборки, требуемые фрагментом кода.

Текстовое значение является обязательным. Данный текст задает сборку, на которую ссылается фрагмент кода.

Элемент Author

Задает имя автора фрагмента. В диспетчере фрагментов кода отображается имя, хранящееся в элементе Author фрагмента кода.

<Author>
   Code Snippet Author
</Author>
Родительский элемент Description
Элемент Header Содержит общие сведения о фрагменте кода.

Текстовое значение является обязательным. Данный текст задает автора фрагмента кода.

Элемент кода

Является контейнером для коротких блоков кода.

Ключевые слова

Для использования в тексте элемента Code доступно два зарезервированных слова: $end$ и $selected$. $end$ отмечает расположение курсора после вставки фрагмента кода. $selected$ представляет выделенный текст документа для вставки в фрагмент кода при вызове фрагмента. Например, дан фрагмент, который включает в себя:

$selected$ is a great color.

Если слово Blue выбрано при вызове фрагмента кода, результатом будет:

Blue is a great color.

Ни $end$, ни $selected$ нельзя использовать во фрагменте кода более одного раза. В этом случае распознается только второй экземпляр. Дан фрагмент, который включает в себя:

$selected$ is a great color. I love $selected$.

Если выбрано слово Blue , результатом будет:

 is a great color. I love Blue.

Начальное пространство появляется, так как между ними isесть пространство$selected$.

Все остальные ключевые слова $ динамически определяются в тегах <Literal> и <Object>.

В следующем коде показана структура Code элемента:

<Code Language="Language"
    Kind="method body/method decl/type decl/page/file/any"
    Delimiter="Delimiter">
    Code to insert
</Code>

Текстовое значение является обязательным. Этот текст задает код, а также литералы и объекты, которые вы можете использовать при вставке этого фрагмента кода в файл кода.

Атрибуты

Для элемента доступны три атрибута Code :

  • Язык. Обязательный атрибут, указывающий язык фрагмента кода. Значение должно быть одним из следующих значений:

    значение Описание
    VB Фрагмент кода Visual Basic.
    CSharp Фрагмент кода C#.
    CPP Фрагмент кода C++ .
    XAML Фрагмент кода XAML.
    XML Фрагмент кода XML.
    JavaScript Фрагмент кода JavaScript.
    TypeScript Фрагмент кода TypeScript.
    SQL Фрагмент кода SQL.
    HTML Фрагмент кода HTML.
  • Вроде. Необязательный атрибут, указывающий тип кода, который содержит фрагмент кода. Значение должно быть одним из следующих значений:

    значение Описание
    method body Фрагмент является телом метода, поэтому его необходимо вставить в объявление метода.
    method decl Фрагмент кода — это метод, поэтому его необходимо вставить в класс или модуль.
    type decl Фрагмент кода — это тип, поэтому его необходимо вставить в класс, модуль или пространство имен.
    file Фрагмент кода представляет собой полный файл кода и может быть вставлен в файл кода или внутри пространства имен.
    any Фрагмент можно вставить в любом месте. Данный тег используется для фрагментов кода, которые не зависят от контекста, например для комментариев.
  • Разделитель. Необязательный атрибут, указывающий разделитель, используемый для описания литералы и объектов в коде. По умолчанию используется разделитель $.

Родительский элемент

Родительский элемент Description
Элемент Snippet Содержит ссылки, операции импорта, объявления и код для фрагмента кода.

Элемент CodeSnippet

Позволяет указать заголовок и несколько фрагментов кода, которые можно вставить в файлы Visual Studio Code.

<CodeSnippet Format="x.x.x">
    <Header>... </Header>
    <Snippet>... </Snippet>
</CodeSnippet>
Атрибут Description
Формат Обязательный атрибут. Задает версию схемы фрагмента кода. Атрибут Format должен быть строкой в синтаксисеx.x.x, где каждый x представляет числовое значение номера версии. Visual Studio игнорирует фрагменты кода с атрибутами format , которые не понимают.
Дочерний элемент Description
Элемент Header Обязательный элемент. Содержит общие сведения о фрагменте кода. Фрагмент кода должен содержать ровно один элемент Header.
Элемент Snippet Обязательный элемент. Содержит код, вставляемый Visual Studio. Фрагмент кода должен содержать ровно один элемент Snippet.
Родительский элемент Description
Элемент CodeSnippets Корневой элемент схемы XML фрагмента кода.

Элемент CodeSnippets

Группирует элементы CodeSnippet. Элемент CodeSnippets является корневым элементом схемы XML фрагмента кода.

<CodeSnippets>
    <CodeSnippet>... </CodeSnippet>
</CodeSnippets>
Дочерний элемент Description
Элемент CodeSnippet Необязательный элемент. Родительский элемент для всех данных фрагмента кода. Элемент CodeSnippet может содержать любое число элементов CodeSnippets, включая ноль.

Элемент Declarations

Задает литералы и объекты, которые составляют части фрагмента кода, доступные для изменения.

<Declarations>
    <Literal>... </Literal>
    <Object>... </Object>
</Declarations>
Дочерний элемент Description
Элемент Literal Необязательный элемент. Задает литералы фрагмента кода, доступные для редактирования. Элемент Literal может содержать любое число элементов Declarations, включая ноль.
Элемент Object Необязательный элемент. Задает объекты фрагмента кода, доступные для изменения. Элемент Object может содержать любое число элементов Declarations, включая ноль.
Родительский элемент Description
Элемент Snippet Содержит ссылки, операции импорта, объявления и код для фрагмента кода.

Элемент Default

Указывает значение по умолчанию литерала или объекта для фрагмента кода.

<Default>
    Default value
</Default>
Родительский элемент Description
Элемент Literal Определяет доступные для редактирования поля литералов фрагмента кода.
Элемент Object Определяет доступные для редактирования поля объектов фрагмента кода.

Текстовое значение является обязательным. В этом тексте указывается значение по умолчанию для литерала или объекта в поле фрагмента кода, доступном для редактирования.

Элемент Description

Указывает описательные сведения о содержимом фрагмента кода.

<Description>
    Code Snippet Description
</Description>
Родительский элемент Description
Элемент Header Содержит общие сведения о фрагменте кода.

Текстовое значение является обязательным. Этот текст описывает фрагмент кода.

Function, элемент

Задает функцию, выполняемую при получении фокуса литералом или объектом в Visual Studio.

Примечание.

Не все языки поддерживают элементы Function. См. сведения о доступных функциях в документации по языку.

<Function>
    FunctionName
</Function>
Родительский элемент Description
Элемент Literal Определяет доступные для редактирования поля литералов фрагмента кода.
Элемент Object Определяет доступные для редактирования поля объектов фрагмента кода.

Текстовое значение является обязательным. Этот текст задает функцию, выполняемую при получении фокуса литералом или полем объекта в Visual Studio.

Элемент Header

Задает общие сведения о фрагменте кода.

<Header>
    <Title>... </Title>
    <Author>... </Author>
    <Description>... </Description>
    <HelpUrl>... </HelpUrl>
    <SnippetTypes>... </SnippetTypes>
    <Keywords>... </Keywords>
    <Shortcut>... </Shortcut>
</Header>
Дочерний элемент Description
Элемент Author Необязательный элемент. Имя человека или компании, которые являются автором фрагмента кода. В элементе Header может быть ноль или один Author элемент.
Элемент Description Необязательный элемент. Описание фрагмента кода. В элементе Header может быть ноль или один Description элемент.
Элемент HelpUrl Необязательный элемент. URL-адрес, содержащий дополнительные сведения о фрагменте кода. В элементе Header может быть ноль или один HelpURL элемент.
Элемент Keywords Необязательный элемент. Группирует элементы Keyword. В элементе Header может быть ноль или один Keywords элемент.
Элемент Shortcut Необязательный элемент. Задает сокращенное имя, которое может использоваться для вставки фрагмента. В элементе Header может быть ноль или один Shortcut элемент.
Элемент SnippetTypes Необязательный элемент. Группирует элементы SnippetType. В элементе Header может быть ноль или один SnippetTypes элемент. При отсутствии элементов SnippetTypes фрагмент кода всегда действителен.
Элемент Title Обязательный элемент. Понятное имя фрагмента кода. Элемент Title должен содержать ровно один элемент Header.
Родительский элемент Description
Элемент CodeSnippet Родительский элемент для всех данных фрагмента кода.

Элемент HelpUrl

Задает URL-адрес, по которому можно получить дополнительные сведения о фрагменте кода.

Примечание.

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

<HelpUrl>
    www.microsoft.com
</HelpUrl>
Родительский элемент Description
Элемент Header Содержит общие сведения о фрагменте кода.

Текстовое значение является необязательным. Данный текст задает URL-адрес с дополнительными сведениями о фрагменте кода.

Элемент ID

Задает уникальный идентификатор элемента Literal или Object. Никакие два литерала или объекта в одном фрагменте кода не могут иметь одинаковое текстовое значение в элементах ID. Литералы и объекты не могут содержать ID элемент со значением end. Значение $end$ зарезервировано и используется для указания позиции курсора после вставки фрагмента кода.

<ID>
    Unique Identifier
</ID>
Родительский элемент Description
Элемент Literal Определяет доступные для редактирования поля литералов фрагмента кода.
Элемент Object Определяет доступные для редактирования поля объектов фрагмента кода.

Текстовое значение является обязательным. Данный текст задает уникальный идентификатор для объекта или литерала.

Элемент Import

Указывает импортированные пространства имен, используемые фрагментом кода.

<Import>
    <Namespace>... </Namespace>
</Import>
Дочерний элемент Description
Элемент Namespace Обязательный элемент. Задает пространство имен, используемое фрагментом кода. Элемент Namespace должен содержать ровно один элемент Import.
Родительский элемент Description
Элемент Imports Группирующий элемент для элементов Import.

Элемент Imports

Группирует отдельные элементы Import.

<Imports>
    <Import>... </Import>
</Imports>
Дочерний элемент Description
Элемент Import Необязательный элемент. Содержит импортированные пространства имен для фрагмента кода. Элемент Imports может содержать любое число элементов Import, включая ноль.
Родительский элемент Description
Элемент Snippet Содержит ссылки, операции импорта, объявления и код для фрагмента кода.

Элемент Keyword

Задает пользовательское ключевое слово для фрагмента кода. Ключевые слова фрагментов кода используются в Visual Studio и представляют собой стандартный способ добавления ключевых слов для поиска и категоризации поставщиками содержимого в Интернете.

<Keyword>
    Code Snippet Keyword
</Keyword>
Родительский элемент Description
Элемент Keywords Группирует отдельные элементы Keyword.

Текстовое значение является обязательным. Ключевое слово для фрагмента кода.

Элемент Keywords

Группирует отдельные элементы Keyword. Ключевые слова фрагментов кода используются в Visual Studio и представляют собой стандартный способ добавления ключевых слов для поиска и категоризации поставщиками содержимого в Интернете.

<Keywords>
    <Keyword>... </Keyword>
    <Keyword>... </Keyword>
</Keywords>
Дочерний элемент Description
Элемент Keyword Необязательный элемент. Содержит отдельные ключевые слова для фрагмента кода. Элемент Keyword может содержать любое число элементов Keywords, включая ноль.
Родительский элемент Description
Элемент Header Содержит общие сведения о фрагменте кода.

Literal, элемент

Задает литералы фрагмента кода, доступные для редактирования. Элемент Literal определяет замену фрагмента кода, полностью содержащегося в фрагменте кода, который можно настроить после вставки фрагмента кода. Например, строки литералов, числовые значения и некоторые имена переменных должны объявляться как литералы.

Литералы и объекты не могут содержать ID элемент со значением selected или end. Значение $selected$ представляет выделенный текст документа, который будет вставлен в фрагмент при вызове фрагмента. $end$ отмечает расположение курсора после вставки фрагмента кода.

<Literal Editable="true/false">
   <ID>... </ID>
   <ToolTip>... </ToolTip>
   <Default>... </Default>
   <Function>... </Function>
</Literal>
Атрибут Description
Редактируемые Необязательный атрибут элемента Boolean. Задает, доступен ли литерал для редактирования после вставки фрагмента кода. Значение данного атрибута по умолчанию — true.
Дочерний элемент Description
Элемент Default Обязательный элемент. Задает значение по умолчанию литерала при вставке фрагмента кода. Элемент Default должен содержать ровно один элемент Literal.
Элемент Function Необязательный элемент. Задает функцию для выполнения при получении литералом фокуса в Visual Studio. В элементе Literal может быть ноль или один Function элемент.
Элемент ID Обязательный элемент. Задает уникальный идентификатор для литерала. Элемент ID должен содержать ровно один элемент Literal.
Элемент ToolTip Необязательный элемент. Описывает ожидаемое значение и способ использования литерала. В элементе Literal может быть ноль или один ToolTip элемент.
Родительский элемент Description
Элемент Declarations Содержит литералы и объекты фрагмента кода, доступные для редактирования.

Элемент Namespace

Задает пространство имен, которое требуется импортировать для компиляции и запуска фрагмента кода. Пространство имен, заданное в элементе Namespace, автоматически добавляется в директиву using или в инструкцию Imports в начале кода в том случае, если оно еще не существует.

<Namespace>
    Namespace
</Namespace>
Родительский элемент Description
Элемент Import Импортирует заданное пространство имен.

Текстовое значение является обязательным. Данный текст задает пространство имен, трактуемое фрагментом кода как импортированное.

Элемент Object

Задает объекты фрагмента кода, доступные для изменения. Элемент Object определяет элемент, необходимый фрагменту кода, который определен вне самого фрагмента кода. Например, элементы управления Windows Forms, элементы управления ASP.NET, экземпляры объектов и экземпляры типов должны быть объявлены как объекты. Объявления объектов требуют указания типа, который выполняется с элементом Type .

<Object Editable="true/false">
    <ID>... </ID>
    <Type>... </Type>
    <ToolTip>... </ToolTip>
    <Default>... </Default>
    <Function>... </Function>
</Object>
Атрибут Description
Редактируемые Необязательный атрибут элемента Boolean. Задает, доступен ли литерал для редактирования после вставки фрагмента кода. Значение данного атрибута по умолчанию — true.
Дочерний элемент Description
Элемент Default Обязательный элемент. Задает значение по умолчанию литерала при вставке фрагмента кода. Элемент Default должен содержать ровно один элемент Literal.
Элемент Function Необязательный элемент. Задает функцию для выполнения при получении литералом фокуса в Visual Studio. В элементе Literal может быть ноль или один Function элемент.
Элемент ID Обязательный элемент. Задает уникальный идентификатор для литерала. Элемент ID должен содержать ровно один элемент Literal.
Элемент ToolTip Необязательный элемент. Описывает ожидаемое значение и способ использования литерала. В элементе Literal может быть ноль или один ToolTip элемент.
Элемент Type Обязательный элемент. Указывает тип объекта . Элемент Type должен содержать ровно один элемент Object.
Родительский элемент Description
Элемент Declarations Содержит литералы и объекты фрагмента кода, доступные для редактирования.

Элемент Reference

Задает сведения о ссылках на сборки, требуемые фрагментом кода.

<Reference>
    <Assembly>... </Assembly>
    <Url>... </Url>
</Reference>
Дочерний элемент Description
Элемент Assembly Обязательный элемент. Содержит имя сборки, на которую ссылается фрагмент кода. Элемент Assembly должен содержать ровно один элемент Reference.
Элемент Url Необязательный элемент. Содержит URL-адрес, по которому доступны дополнительные сведения о сборке, на которую создается ссылка. В элементе Reference может быть ноль или один Url элемент.
Родительский элемент Description
Элемент References Группирующий элемент для элементов Reference.

Элемент References

Группирует отдельные элементы Reference.

<References>
    <Reference>... </Reference>
</References>
Дочерний элемент Description
Элемент Reference Необязательный элемент. Содержит сведения о ссылках на сборки для фрагмента кода. Элемент Reference может содержать любое число элементов References, включая ноль.
Родительский элемент Description
Элемент Snippet Содержит ссылки, операции импорта, объявления и код для фрагмента кода.

Элемент Shortcut

Задает краткий текст, используемый для вставки фрагмента кода. Текстовое значение Shortcut элемента может содержать только буквенно-цифровые символы и символы подчеркивания (_).

Примечание.

Символ подчеркивания (_) не поддерживается в сочетаниях клавиш фрагмента кода C++.

<Shortcut>
    Shortcut Text
</Shortcut>
Родительский элемент Description
Элемент Header Содержит общие сведения о фрагменте кода.

Текстовое значение является необязательным. Данный текст используется как сокращенное имя для вставки фрагмента кода.

Элемент Snippet

Задает ссылки, импортируемые элементы, объявления и код для фрагмента кода.

<Snippet>
    <References>... </References>
    <Imports>... </Imports>
    <Declarations>... </Declarations>
    <Code>... </Code>
</Snippet>
Дочерний элемент Description
Элемент Code Обязательный элемент. Задает код, который требуется вставить в файл документации. Элемент Code должен содержать ровно один элемент Snippet.
Элемент Declarations Необязательный элемент. Задает литералы и объекты, которые составляют части фрагмента кода, доступные для изменения. В элементе Snippet может быть ноль или один Declarations элемент.
Элемент Imports Необязательный элемент. Группирует отдельные элементы Import. В элементе Snippet может быть ноль или один Imports элемент.
Элемент References Необязательный элемент. Группирует отдельные элементы Reference. В элементе Snippet может быть ноль или один References элемент.
Родительский элемент Description
Элемент CodeSnippet Позволяет указать заголовок и несколько фрагментов кода, которые можно вставить в файлы Visual Studio Code.

SnippetType, элемент

Указывает, как Visual Studio добавляет фрагмент кода.

<SnippetType>
    SurroundsWith/Expansion
</SnippetType>
Родительский элемент Description
Элемент SnippetTypes Группирует элементы SnippetType.

Значение должно быть одним из следующих значений:

значение Описание
Expansion Позволяет вставлять фрагмент кода на курсор.
Refactoring Указывает, что фрагмент кода используется во время рефакторинга C#. Refactoring нельзя использовать в фрагментах пользовательского кода.
SurroundsWith Позволяет фрагменту кода размещаться вокруг выбранного фрагмента кода.

Элемент SnippetTypes

Группирует отдельные элементы SnippetType. SnippetTypes Если элемент отсутствует, фрагмент кода можно вставить на курсор или поместить вокруг выбранного кода.

<SnippetTypes>
    <SnippetType>... </SnippetType>
    <SnippetType>... </SnippetType>
</SnippetTypes>
Дочерний элемент Description
Элемент SnippetType Необязательный элемент. Задает способ вставки фрагмента кода в Visual Studio. Элемент SnippetType может содержать любое число элементов SnippetTypes, включая ноль.
Родительский элемент Description
Элемент Header Задает общие сведения о фрагменте кода.

Элемент Title

Задает заголовок фрагмента кода. Заголовок, хранящийся в элементе фрагмента кода, отображается в Title средстве выбора фрагмента кода и в качестве имени фрагмента кода в диспетчере фрагментов кода.

<Title>
    Code Snippet Title
</Title>
Родительский элемент Description
Элемент Header Задает общие сведения о фрагменте кода.

Текстовое значение является обязательным. Данный текст задает заголовок фрагмента кода.

Элемент ToolTip

Описывает ожидаемое значение и использование литерала или объекта в фрагменте кода. Visual Studio отображает эти сведения в подсказке при вставке фрагмента кода в проект. Подсказка также отображается при наведении указателя мыши на литерал или объект после вставки фрагмента кода.

<ToolTip>
    ToolTip description
</ToolTip>
Родительский элемент Description
Элемент Literal Определяет доступные для редактирования поля литералов фрагмента кода.
Элемент Object Определяет доступные для редактирования поля объектов фрагмента кода.

Текстовое значение является обязательным. Данный текст определяет описание элемента ToolTip, которое будет относиться к объекту или литералу во фрагменте кода.

Элемент Type

Указывает тип объекта . Элемент Object определяет элемент, который требует фрагмент кода, но, вероятно, определен вне самого фрагмента кода. Например, элементы управления Windows Forms, элементы управления ASP.NET, экземпляры объектов и экземпляры типов должны быть объявлены как объекты. Объявления объектов требуют указания типа, который выполняется с элементом Type .

<Type>
    Type
</Type>
Родительский элемент Description
Элемент Object Определяет доступные для редактирования поля объектов фрагмента кода.

Текстовое значение является обязательным. Данный текст задает тип объекта. Например:

<Type>System.Data.SqlClient.SqlConnection</Type>

Элемент Url

Задает URL-адрес, предоставляющий дополнительные сведения о сборке, на которую создается ссылка.

Примечание.

Элемент Url поддерживается только для проектов Visual Basic.

<Url>
    www.microsoft.com
</Url>
Родительский элемент Description
Элемент Reference Задает ссылки на сборки, требуемые фрагментом кода.

Текстовое значение является обязательным. Данный текст задает URL-адрес, по которому доступны дополнительные сведениями о сборке, на которую создается ссылка. Этот URL-адрес отображается, когда ссылка не может быть добавлена в проект.