nakamurakko’s blog

仕事で覚えたこと、勉強したことを自分のメモ代わりに書いていこうかなと。

Code Snippet を作る

環境

  • Visual Studio 2019

ソースコードを編集していると、何度も同じことを書くのは面倒くさいので、別のソースコードからコピペするという事が時々発生する。 Visual Studio では、 Code Snippet (コードスニペット)が用意されていて、コードスニペットを使えば面倒くさい作業を簡略化出来る。

例えば、下記のようなパブリックコンストラクターを用意する時、

public コンストラクター()
{

}
  1. 「public」を書く。
  2. コンストラクターはクラス名と同じなので、クラス名を手書き(またはクラス名をコピペ)。
  3. 残りのカッコを書く。

の順番で手書きするところを、コンストラクター用のコードスニペット ctor を使えば、

  1. ctor と入力する。 f:id:nakamurakko:20210912202159p:plain
  2. Tab キーを2回押す。 f:id:nakamurakko:20210912202245p:plain

という、手書きの時の「クラス名を手書き(またはクラス名をコピペ)」を含めて自動的にやってくれる。

コードスニペットマネージャーで ctor の定義を確認すると、ショートカットは ctor 、 Visual Studio のインストール先に ctor.snippet というファイル名で存在する事が分かる。他のスニペットもファイルを開いてみれば、参考になると思う。

f:id:nakamurakko:20210912202330p:plain

自分で作ってみる

作成する時は、 チュートリアル: コード スニペットを作成する を確認しながら作成し、 https://github.com/nakamurakko/MyCodeSnippets にいくつか登録した。

WPF デザイン時に使用する xmlns を追加するコードスニペット

試しに作ったのは、WPF で Window クラスの XAML に、下記の xmlns を一式追加するコードスニペット。下記スニペットは GitHub (https://github.com/nakamurakko/MyCodeSnippets/blob/master/WpfDesignTimeXmlns.snippet) に登録している。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <Header>
    <SnippetTypes>
      <SnippetType>Expansion</SnippetType>
    </SnippetTypes>
    <Title>WPFデザイン時用xmlns</Title>
    <Description>WPFのViewデザイン時に使用する、Windowのxmlnsを追加する。</Description>
    <Shortcut>dxmlns</Shortcut>
  </Header>
  <Snippet>
    <Declarations>
        <Literal Editable="true">
            <ID>ViewModelNamespace</ID>
            <ToolTip>ViewModel Namespace</ToolTip>
            <Default>App1.ViewModels</Default>
            <Function>
            </Function>
        </Literal>
        <Literal Editable="true">
            <ID>ViewModel</ID>
            <ToolTip>ViewModel</ToolTip>
            <Default>MainWindowViewModel</Default>
            <Function>
            </Function>
        </Literal>
    </Declarations>
    <Code Language="XAML"><![CDATA[xmlns:viewModels="clr-namespace:$ViewModelNamespace$"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance viewModels:$ViewModel$}"]]></Code>
  </Snippet>
</CodeSnippet>

Windows クラスを新規作成後、下記の4つをまとめて追加するために使用する。

  1. 使用する ViewModel クラスの名前空間
  2. 設計時に使用する名前空間 (その他の XAML 名前空間)
  3. mc XML 名前空間プレフィックス
  4. mc:Ignorable="d" (mc:Ignorable 属性)
  5. デザイン時用 DataContext

作成したコードスニペットを Visual Studio に登録したら、XAML を開き dxmlns と入力する。

f:id:nakamurakko:20210912202359p:plain

Tab キーを2回押すと、5行追加される。

f:id:nakamurakko:20210912202416p:plain

1つ目の入力項目、 ViewModel の名前空間を入力する。

f:id:nakamurakko:20210912202441p:plain

2つ目の入力項目、 デバッグ用 DataContext の ViewModel のクラス名を入力する。

f:id:nakamurakko:20210912202503p:plain

ビルドしてエラーが無ければ完了。


うまく利用して楽しましょう。