Distribuir snippets de código como uma extensão do Visual Studio

Você pode fornecer os snippets de código a seus amigos e solicitar a eles que instalem os snippets em seus próprios computadores usando o Gerenciador de Snippets de Código. No entanto, se tiver vários snippets para distribuir ou desejar distribuí-los mais amplamente, você poderá incluir os arquivos de snippet em uma extensão do Visual Studio. Em seguida, os usuários do Visual Studio podem instalar a extensão para obter os snippets.

Pré-requisitos

Instale a carga de trabalho do desenvolvimento de extensões do Visual Studio para obter acesso aos modelos do Projeto do VSIX.

Carga de trabalho de desenvolvimento de extensão do Visual Studio

Configurar a estrutura do diretório de extensão

Neste procedimento, você usará o mesmo snippet de código Olá, Mundo criado no Passo a passo: Criar um snippet de código. Este artigo fornece o snippet XML, portanto, você não precisa voltar e criar um snippet.

  1. Crie um novo projeto a partir do modelo de Projeto VSIX vazio e nomeie o projeto TestSnippet.

  2. No projeto TestSnippet, adicione um novo arquivo XML e chame-o VBCodeSnippet.snippet (.snippet é a nova extensão de arquivo). Substitua o conteúdo pelo seguinte XML:

    <?xml version="1.0" encoding="utf-8"?>
    <CodeSnippets
        xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
      <CodeSnippet Format="1.0.0">
        <Header>
          <Title>Hello World VB</Title>
          <Shortcut>HelloWorld</Shortcut>
          <Description>Inserts code</Description>
          <Author>MSIT</Author>
          <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
          </SnippetTypes>
        </Header>
        <Snippet>
          <Code Language="VB">
            <![CDATA[Console.WriteLine("Hello, World!")]]>
          </Code>
        </Snippet>
      </CodeSnippet>
    </CodeSnippets>
    
  3. No Gerenciador de Soluções, selecione o nó do projeto e adicione uma pasta que tenha o nome que deseja que o snippet tenha no Gerenciador de Snippets de Código. Neste caso, deve ser HelloWorldVB.

  4. Mova o arquivo .snippet para a pasta HelloWorldVB.

  5. Selecione o arquivo .snippet no Gerenciador de Soluções e, na janela Propriedades, garanta que Ação de Build esteja definida como Conteúdo, Copiar para Diretório de Saída esteja definido como Copiar sempre e Incluir no VSIX esteja definido como true.

Adicionar o arquivo .pkgdef

  1. Adicione um arquivo de texto à pasta HelloWorldVB e dê a ele o nome de HelloWorldVB.pkgdef. Esse arquivo é usado para adicionar determinadas chaves ao Registro. Para obter mais informações, consulte Exibir o registro para o trecho (opcional).

  2. Adicione as seguintes linhas ao arquivo.

    // Visual Basic
    [$RootKey$\Languages\CodeExpansions\Basic\Paths]
    "HelloWorldVB"="$PackageFolder$"
    

    Se você examinar essa chave, poderá ver como especificar idiomas diferentes do Visual Basic.

  3. Selecione o arquivo .pkgdef no Gerenciador de Soluções e, na janela Propriedades, garanta que:

    • A opção Ação de Build esteja definida como Conteúdo
    • A opção Copiar para Diretório de Saída esteja definida como Sempre copiar
    • A opção Incluir no VSIX esteja definida como true
  4. Adicione o arquivo .pkgdef como um ativo no manifesto VSIX. No arquivo source.extension.vsixmanifest, vá para a guia Ativos e clique em Novo.

  5. Na caixa de diálogo Adicionar Novo Ativo, defina o Tipo como Microsoft.VisualStudio.VsPackage, a Origem como Arquivo no sistema de arquivos e o Caminho como HelloWorldVB.pkgdef (que deve aparecer na lista suspensa). Selecione OK para salvar esse novo ativo.

Registrar o snippet

  1. Acesse Ferramentas>Gerenciador de Snippets de Código e defina a Linguagem como Basic.

  2. Selecione Adicionar..., navegue até a pasta HelloWorldVB do diretório da solução e escolha Selecionar Pasta.

  3. HelloWorldVB agora é uma das pastas de snippet de código. Expanda a pasta para ver o snippet HelloWorldVB. Selecione OK para salvar essa pasta recém-adicionada.

Teste o snippet

Agora você pode verificar se o snippet de código funciona na instância experimental do Visual Studio. A instância experimental é uma segunda cópia do Visual Studio, que é separada daquela que você usa para escrever código. Ela permite que você trabalhe em uma extensão sem afetar seu ambiente de desenvolvimento.

  1. Compile o projeto e comece a depuração.

    Uma segunda instância do Visual Studio é exibida.

  2. Teste o snippet. Na instância experimental, abra um projeto do Visual Basic e abra um dos arquivos de código. Coloque o cursor em algum lugar no código, clique com o botão direito do mouse e, no menu de contexto, selecione Snippet e, depois, Inserir Snippet.

  3. Clique duas vezes na pasta HelloWorldVB. Você verá um pop-up Inserir snippet: HelloWorldVB > que tem uma lista suspensa HelloWorldVB. Clique duas vezes na lista suspensa HelloWorldVB.

    A seguinte linha é adicionada ao arquivo de código:

    Console.WriteLine("Hello, World!")
    

Exibir o registro para o trecho (opcional)

O arquivo .pkgdef é usado para adicionar determinadas chaves ao Registro. Depois de registrar o trecho, se você precisar exibir as chaves do Registro na hive do registro privado, poderá encontrá-las na seguinte subchave:

Visual Studio 2022: HKEY_USERS\IsolatedHiveName\Software\Microsoft\VisualStudio\17.0_configID\Languages\CodeExpansions\Basic\Paths

Visual Studio 2019: HKEY_USERS\IsolatedHiveName\Software\Microsoft\VisualStudio\16.0_configID\Languages\CodeExpansions\Basic\Paths

Para exibir as chaves do Registro nessa localização, primeiro feche o Visual Studio, abra o editor do Registro e carregue o hive do Registro privado em HKEY_USERS.

Importante

Se você verificar o registro, certifique-se de descarregar o hive do registro privado antes de iniciar o Visual Studio.

Por exemplo, as chaves do registro podem aparecer como mostrado aqui.

Captura de tela das chaves do registro para snippets de código.