SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

VSのプロジェクト・テンプレートを作成する

VisualStudioには、プロジェクトのテンプレートを、ウィザード形式で簡単に作る機能が備わっています。
で、さっそくWPF開発でよく使うファイルをまとめたテンプレートを作ってみました。

テンプレートの作成には、↓の記事がとても参考になりました。
http://kiyokura.hateblo.jp/entry/20121218/p1
http://www.atmarkit.co.jp/fdotnet/dotnettips/535myprojecttemplate/myprojecttemplate.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/536customprjtemplate/customprjtemplate.html

雛形となるプロジェクトの作成

まずは、テンプレートにしたい雛形プロジェクトを作成します。
今回は、WPFの開発でよく使うものをちょこっと入れたプロジェクトを作ります。
以下のようなプロジェクトを作りました。
f:id:minami_SC:20140209230848p:plain

テンプレートに入れたもの

Imageフォルダ

テスト用画像を1枚入れました。
Imageコントロールとか使うときに、適当な画像を流し込んで表示してみたい時とかよくあるんで。

ウィザードでテンプレートの作成

雛形となるプロジェクトが出来上がったら、メニューから「ファイル⇒テンプレートのエクスポート」を選び、ウィザードに従って進めていくとテンプレートが出来上がります。
f:id:minami_SC:20140209230906p:plain:w300
f:id:minami_SC:20140209230911p:plain:w400
f:id:minami_SC:20140209230917p:plain:w400

これで作成した独自のテンプレートがzip形式に圧縮されて以下のパスに保存されます。
[Documentsフォルダ]\Visual Studio 2013\Templates\ProjectTemplates
すると、以下のように新規プロジェクトの作成ウィザードに、今作成したテンプレートが表示されることが確認できます。
f:id:minami_SC:20140209230926p:plain

テンプレートの属するフォルダ移動

ここまででも十分便利なのですが、もうちょこっと手を入れてみたいと思います。
このテンプレートは「新しいプロジェクト」画面で、Visual C#の項目を選択した時に出てきます。
でも、Visual C#は、たくさんの項目が表示されて、探すのが大変です。
ここは他のWPFのテンプレートなどと同じように、Windowsを選択した時に表示されるようにしたいと思います。

テンプレートの整理については、以下のページにまとまっています。
http://msdn.microsoft.com/ja-jp/library/vstudio/y3kkate1%28v=vs.100%29.aspx

作成したテンプレートが表示されるフォルダを変更するには、作成されたzipファイルを移動するだけでできます。
ウィザードでテンプレートを作成すると、以下の場所にテンプレートのzipファイルが作成されます。
[Documentsフォルダ]\Visual Studio 2013\Templates\ProjectTemplates
これを、↓の場所に移動すると、VisualC# ⇒ Windowsフォルダで、作成したテンプレートが表示されるようになります。
[Documentsフォルダ]\Visual Studio 2013\Templates\ProjectTemplates\Visual C#\Windows
f:id:minami_SC:20140209231501p:plain

テンプレートを親フォルダでも表示するようにする

この手順でフォルダに格納すると、今度は親フォルダのWindowsフォルダを選択した時に、この作成したテンプレートが表示されなくなってしまいます。
テンプレートのzipを配置した階層よりも上位の階層でも表示されるようにするためには、zipファイルを展開して、中身の.vstemplateファイルを編集します。
↓のように、NumberOfParentCategoriesToRollUp要素を追加すると、値で書いた階層だけ上位のフォルダでも表示されるようになります。
今回はVisualC#/Windowsフォルダにテンプレートのzipファイルを配置し、VisualC#フォルダでもこのテンプレートを表示してほしいので、「1」という値を書き込んでいます。

  <TemplateData>
    ・・・略
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
  </TemplateData>

で、このファイルの編集が終わったら再度zipに圧縮して、テンプレートのフォルダに配置します。
ちなみに、圧縮する時には、以下の画像のようにすべてのファイルを選択してzip圧縮しないといけないので、注意が必要です。
f:id:minami_SC:20140209231100p:plain