Пошаговое руководство. Создание фрагмента кода в Visual Studio

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

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

создание фрагмента кода

  1. Откройте Visual Studio и нажмите кнопку "Продолжить без кода" на начальном экране.

    Снимок экрана: окно

  2. В строке меню выберите "Файл>нового файла" или введите CTRL+N.

  3. В диалоговом окне "Создать файл" выберите XML-файл и нажмите кнопку "Открыть".

    Снимок экрана: диалоговое окно

  4. Вставьте следующий базовый шаблон фрагмента кода в редактор кода.

    <?xml version="1.0" encoding="utf-8"?>
    <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
        <CodeSnippet Format="1.0.0">
            <Header>
                <Title></Title>
            </Header>
            <Snippet>
                <Code Language="">
                    <![CDATA[]]>
                </Code>
            </Snippet>
        </CodeSnippet>
    </CodeSnippets>
    
  5. Введите заголовок Square Root в элемент фрагмента Title кода.

  6. В атрибуте Language элемента заполните фрагмент CSharp для фрагмента Code кода C# или VB для Visual Basic.

    Совет

    Чтобы просмотреть все доступные языковые значения, см. статью "Атрибуты" в справочнике по схеме фрагментов кода.

  7. Добавьте следующий фрагмент кода CDATA в раздел внутри Code элемента.

    Для C#:

        <![CDATA[double root = Math.Sqrt(16);]]>
    

    Для Visual Basic:

        <![CDATA[Dim root = Math.Sqrt(16)]]>
    

    Примечание.

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

  8. Сохраните фрагмент в любом месте как SquareRoot.snippet.

Импорт фрагмента кода

  1. Чтобы импортировать фрагмент кода в установку Visual Studio, выберите диспетчер фрагментов кода инструментов>или нажмите клавиши CTRL+K, B.

  2. В диспетчере фрагментов кода нажмите кнопку "Импорт".

  3. Перейдите к расположению фрагмента кода, выберите его и нажмите кнопку "Открыть".

  4. В диалоговом окне импорта кода выберите папку "Фрагменты кода" в правой области. Выберите Готово, затем выберите ОК.

    В зависимости от языка кода фрагмент копируется в одно из следующих расположений:

    %USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual C#\My Code Snippets%USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual Basic\My Code Snippets

    %USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets%USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual Basic\My Code Snippets

  5. Протестируйте фрагмент, открыв проект C# или Visual Basic. Открыв файл кода в редакторе, выполните одно из следующих действий:

    • В строке меню Visual Studio нажмите кнопку "Изменить>IntelliSense>Insert Snippet".
    • Щелкните правой кнопкой мыши и выберите фрагмент>вставить фрагмент из контекстного меню.
    • На клавиатуре нажмите клавиши CTRL+K, X.
  6. Откройте фрагменты кода и дважды щелкните фрагмент кода с именем Square Root. Код фрагмента вставляется в файл кода.

Поля Description и ярлыков

Поле описания содержит дополнительные сведения о фрагменте кода при просмотре в диспетчере фрагментов кода. Ярлык — это тег, который можно ввести для вставки фрагмента кода.

  1. Чтобы изменить фрагмент кода, откройте файл фрагмента кода из одного из следующих расположений в зависимости от языка кода:

    • %USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual C#\My Code Snippets/SquareRoot.snippet
    • %USERPROFILE%\Documents\Visual Studio 2022\Code Snippets\Visual Basic\My Code Snippets/SquareRoot.snippet
    • %USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual C#\My Code Snippets/SquareRoot.snippet
    • %USERPROFILE%\Documents\Visual Studio 2019\Code Snippets\Visual Basic\My Code Snippets/SquareRoot.snippet

    Совет

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

  2. Добавьте Authorи DescriptionShortcut элементы в Header элемент и заполните их.

  3. Убедитесь, что элемент выглядит примерно так, как показано Header в следующем примере, и сохраните файл.

    <Header>
        <Title>Square Root</Title>
        <Author>Myself</Author>
        <Description>Calculates the square root of 16.</Description>
        <Shortcut>sqrt</Shortcut>
    </Header>
    
  4. Откройте диспетчер фрагментов кода Visual Studio Code и выберите фрагмент кода. В правой области обратите внимание, что поля "Описание", "Автор" и "Ярлык " теперь заполняются.

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

  5. Чтобы проверить ярлык, откройте проект, который вы использовали ранее, введите sqrt в редакторе и нажмите клавишу TAB один раз для Visual Basic или дважды для C#. Код фрагмента должен быть вставлен.

Параметры замены

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

Возможны два типа замен: литералы и объекты.

  • Используйте элемент Литерала, чтобы определить замену кода, полностью содержащегося в фрагменте кода, который можно настроить после вставки в код. Например, строковое или числовое значение.

  • Используйте элемент Object для идентификации элемента, который требует фрагмент кода, но, вероятно, определен за пределами фрагмента кода. Например, экземпляр объекта или элемент управления.

Элемент в файле SquareRoot.snippet можно использоватьLiteral, чтобы пользователи могли легко изменить число, чтобы вычислить квадратный корень.

  1. В файле SquareRoot.snippet измените Snippet элемент следующим образом:

    <Snippet>
      <Code Language="CSharp">
        <![CDATA[double root = Math.Sqrt($Number$);]]>
      </Code>
      <Declarations>
        <Literal>
          <ID>Number</ID>
          <ToolTip>Enter the number you want the square root of.</ToolTip>
          <Default>16</Default>
        </Literal>
      </Declarations>
    </Snippet>
    

    Обратите внимание, что литеральная замена получает идентификатор. Number Вы ссылаетесь на этот идентификатор в фрагменте кода, окружив его $ символами, как показано ниже.

    <![CDATA[double root = Math.Sqrt($Number$);]]>
    
  2. Сохраните файл фрагмента.

  3. Откройте проект и вставьте фрагмент.

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

    Подсказка для параметра замены фрагмента кода в Visual Studio

    Совет

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

Импорт пространства имен

Фрагмент кода можно использовать для добавления директивы using (C#) или оператора Imports (Visual Basic), включив элемент Imports. Для проектов .NET Framework вы можете добавить ссылку на проект с помощью элемента References.

В следующем XML-коде показан фрагмент кода, который использует метод File.Exists в System.IO пространстве имен и поэтому определяет элемент Import для импорта System.IO пространства имен.

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>File Exists</Title>
      <Shortcut>exists</Shortcut>
    </Header>
    <Snippet>
      <Code Language="CSharp">
        <![CDATA[var exists = File.Exists("C:\\Temp\\Notes.txt");]]>
      </Code>
      <Imports>
        <Import>
          <Namespace>System.IO</Namespace>
        </Import>
      </Imports>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>