コード スニペットを Visual Studio 拡張機能として配布する

コード スニペットは友人に配布することができます。友人はコード スニペット マネージャーを使用して、そのスニペットを自分のコンピューターにインストールできます。 ただし、配布するスニペットが複数ある場合や、スニペットをより広範に配布する場合は、スニペット ファイルを Visual Studio 拡張機能に含めることができます。 さらに、Visual Studio ユーザーはこの拡張機能をインストールしてスニペットを取得できます。

前提条件

[VSIX プロジェクト] プロジェクト テンプレートへのアクセス権を取得するために [Visual Studio 拡張機能の開発] ワークロードをインストールします。

Visual Studio 拡張機能の開発ワークロード

拡張ディレクトリ構造を設定する

この手順では、次のチュートリアルで作成したのと同じ Hello World コード スニペットを使います。「チュートリアル: コード スニペットを作成する」を参照してください。 この記事ではスニペット XML を提供します。したがって、後に戻りスニペットを作成する必要はありません。

  1. 空の VSIX プロジェクト テンプレートから新しいプロジェクトを作成して、そのプロジェクトに TestSnippet という名前を付けてください。

  2. TestSnippet プロジェクトで、新しい XML ファイルを追加して、VBCodeSnippet.snippet という名前を付けます (.snippet は新しいファイル拡張子です)。 内容を次の 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. ソリューション エクスプローラーでプロジェクト ノードを選択し、フォルダーを追加します。その名前は、コード スニペット マネージャーでスニペットに付けるのと同じ名前にします。 ここでは、HelloWorldVB になります。

  4. .snippet ファイルを HelloWorldVB フォルダーに移動します。

  5. ソリューション エクスプローラー.snippet ファイルを選び、[プロパティ] ウィンドウで [ビルド アクション][コンテンツ] に、[出力ディレクトリにコピー][常にコピーする] に、[VSIX に含める][true] に、それぞれ設定します。

.pkgdef ファイルを追加する

  1. HelloWorldVB フォルダーにテキスト ファイルを追加し、HelloWorldVB.pkgdef という名前を付けます。 このファイルは、レジストリにキーを追加するために使用します。 詳細については、「スニペットのレジストリを表示する (省略可能)」をご覧ください。

  2. ファイルに次の行を追加します。

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

    このキーを調べると、Visual Basic 以外の言語を指定する方法を確認できます。

  3. ソリューション エクスプローラー.pkgdef ファイルを選択し、[プロパティ] ウィンドウで次のように設定します。

    • [ビルド アクション][コンテンツ] に設定する
    • [出力ディレクトリにコピー][常にコピーする] に設定する
    • [VSIX に含める]true に設定する
  4. VSIX マニフェストに .pkgdef ファイルを資産として追加します。 source.extension.vsixmanifest ファイルで、[資産] タブに移動し、[新規] をクリックします。

  5. [新しい資産の追加] ダイアログ ボックスで、[型]Microsoft.VisualStudio.VsPackage に、[ソース][ファイル システム上のファイル] に、[パス][HelloWorldVB.pkgdef] (ドロップダウン リストに表示される) に、それぞれ設定します。 [OK] を選択して、この新しい資産を保存します。

スニペットを登録する

  1. [ツール]>[コードスニペットマネージャー] の順に移動し、[言語][Basic] に設定します。

  2. [追加] を選択し、ソリューション ディレクトリの HelloWorldVB フォルダーを参照して、[フォルダーの選択] を選びます。

  3. HelloWorldVB が、コード スニペット フォルダーの 1 つになりました。 フォルダーを展開して、HelloWorldVB スニペットを表示します。 [OK] を選択して、この新しく追加したフォルダーを保存します。

スニペットをテストする

これで、コード スニペットが Visual Studio の実験用インスタンスで動作することを確認できるようになりました。 実験用インスタンスとは、コードの記述に使用する Visual Studio とは異なる、Visual Studio のもう 1 つのコピーです。 これを使用することにより、開発環境に影響を与えずに、拡張機能を処理することができます。

  1. プロジェクトをビルドし、デバッグを開始します。

    Visual Studio の 2 番目のインスタンスが表示されます。

  2. スニペットをテストします。 実験用インスタンスで、Visual Basic プロジェクトを開き、コード ファイルのいずれかを開きます。 コードの任意の場所にカーソルを置いて右クリックし、コンテキスト メニューで [スニペット] を選び、次に [スニペットの挿入] を選びます。

  3. HelloWorldVB フォルダーをダブルクリックします。 [スニペットの挿入: HelloWorldVB >] ポップアップが表示されます。ここに [HelloWorldVB] ドロップダウン リストが表示されます。 HelloWorldVB ドロップダウンをダブルクリックします。

    コード ファイルに次の行が追加されます。

    Console.WriteLine("Hello, World!")
    

スニペットのレジストリを表示する (省略可能)

.pkgdef ファイルは、レジストリにキーを追加するために使用します。 スニペットを登録した後、プライベート レジストリ ハイブでレジストリ キーを表示する必要がある場合は、次のサブキーの下でそれらを見つけることができます。

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

この場所のレジストリ キーを表示するには、まず Visual Studio を閉じ、レジストリ エディターを開き、プライベート レジストリ ハイブを HKEY_USERS に読み込みます。

重要

レジストリを確認する場合は、Visual Studio を起動する前に、必ずプライベート レジストリ ハイブをアンロードしてください。

たとえば、レジストリ キーは以下のように表示される場合があります。

コード スニペットのレジストリ キーのスクリーンショット。