Поделиться через


Пошаговое руководство. Создание фрагмента кода в 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. В атрибуте элемента Code введите CSharp, если это фрагмент кода 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. Код фрагмента вставляется в файл кода.

Описание и поля сокращенных команд

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

  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#. Код фрагмента вставляется.

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

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

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

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

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

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

  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), включив элемент Import. Для проектов .NET Framework можно также добавить ссылку на проект с помощью элемента References.

В следующем XML-коде показан фрагмент кода, который использует метод File.Exists в System.IO пространстве имен и поэтому определяет Imports элемент для импорта 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>