チュートリアル: Visual Studio でコード スニペットを作成する

コード スニペットとは、アプリケーションに簡単に挿入できるようにあらかじめ作成されたコードです。 同じようなコードを繰り返し入力したり、サンプルを検索したりする時間を短縮するコード スニペットを使用することで、生産性と信頼性を高めることができます。

独自のコード スニペットを作成し、それらを Visual Studio に標準で付属しているコード スニペットに追加できます。 この記事では、わずか数ステップでコード スニペットを作成する方法について説明します。 XML ファイルを作成し、適切な要素を指定して、コードをファイルに追加します。 必要に応じて、置換パラメーターとプロジェクト参照を使用できます。 次に、スニペットを Visual Studio インストーラーにインポートします。

コード スニペットを作成する

  1. Visual Studio を開き、[スタート] 画面で [コードなしで続行] を選択します。

    [コードなしで続行] オプションが選ばれている [スタート] ウィンドウのスクリーンショット。

  2. メニュー バーから [ファイル]>[新しいファイル] を選択するか、Ctrl+N キーを押します。

  3. [新しいファイル] ダイアログ ボックスで、[XML ファイル] を選択し、[開く] を選択します。

    [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. スニペット Title 要素にタイトル Square Root を入力します。

  6. Code 要素の Language 属性で、C# スニペットの場合は「CSharp」、Visual Basic の場合は「VB」を入力します。

    ヒント

    使用できる言語値をすべて確認するには、「コード スニペット スキーマ リファレンス」の「属性」をご覧ください。

  7. Code 要素内の CDATA セクションに次のスニペット コードを追加します。

    C# の場合 :

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

    Visual Basic の場合

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

    Note

    コード スニペットの CDATA セクション内のコード行を書式設定またはインデントする方法を指定することはできません。 挿入時に、言語サービスによって挿入されるコードの書式が自動的に設定されます。

  8. スニペットを SquareRoot.snippet として任意の場所に保存します。

コード スニペットをインポートする

  1. スニペットを Visual Studio インストーラーにインポートするには、[ツール]>[コード スニペット マネージャー] を選択するか、Ctrl+KB キーを押します。

  2. コード スニペット マネージャーで、[インポート] ボタンを選択します。

  3. コード スニペットの場所に移動して選択し、[開く] を選択します。

  4. [コード スニペットのインポート] ダイアログ ボックスで、右側のウィンドウで [マイ コード スニペット] フォルダーを選択します。 終了 を選択し、そして OK を選択します。

    スニペットは、コード言語に応じて、次のいずれかの場所にコピーされます。

    %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]>[スニペットの挿入] の順に選択します。
    • 右クリックして、コンテキスト メニューから [スニペット]>[スニペットの挿入] を選択します。
    • キーボードで Ctrl+KX キーを押します。
  6. マイ コード スニペットを開き、Square Root という名前のスニペットをダブルクリックします。 スニペット コードがコード ファイルに挿入されます。

Description フィールドと Shortcut フィールド

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. AuthorDescriptionShortcut 要素を 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 コード スニペット マネージャーを開き、コード スニペットを選択します。 右側のウィンドウで、[Description][Author][Shortcut] フィールドが指定されていることに注目してください。

    コード スニペット マネージャーでのコード スニペットの説明

  5. ショートカットをテストするには、以前に使用したプロジェクトを開いて、エディターに「sqrt」と入力し、Tab キーを Visual Basic の場合は 1 回、C# の場合は 2 回押します。 スニペット コードが挿入されます。

置換パラメーター

ユーザーにコード スニペットの一部を置き換えてもらいたい場合があります。 たとえば、ユーザーが変数名をユーザーの現在のプロジェクトに含まれる名前に置き換えられるようにしたいとします。

使用できる置換には、リテラル置換とオブジェクト置換の 2 種類があります。

  • Literal 要素を使用すれば、スニペット内に完全に含まれているがコードに挿入された後にカスタマイズされる可能性が高いコードに対する置換が識別されます。 たとえば、文字列または数値などです。

  • 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>
    

    リテラル置換に ID Number が指定されていることに注目してください。 コード スニペット内でその ID を参照するには、次のように ID を $ 文字で囲みます。

    <![CDATA[double root = Math.Sqrt($Number$);]]>
    
  2. スニペット ファイルを保存します。

  3. プロジェクトを開き、スニペットを挿入します。

    コード スニペットが挿入され、編集可能なリテラルが置換対象として強調表示されます。 置換パラメーターにカーソルを合わせると、値のヒントが表示されます。

    Visual Studio でのコード スニペット置換パラメーターに関するヒント

    ヒント

    スニペット内に置換可能なパラメーターが複数存在する場合は、Tab キーを押すと、次のパラメーターに移動し、値が変化します。

名前空間をインポートする

コード スニペットを使用すれば、Imports 要素を含めることで、using ディレクティブ (C#) または Imports ステートメント (Visual Basic) を追加できます。 .NET Framework プロジェクトの場合は、References 要素を使用してプロジェクトへの参照を追加することもできます。

次の XML で示すコード スニペットでは、System.IO 名前空間内に File.Exists メソッドが使用され、その結果として、System.IO 名前空間をインポートする Imports 要素が定義されています。

<?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>