One Step Ahead

プログラミングやエンジニアリング全般について書いていきます

Visual Studioで『Custom Project Templates』の作成

はじめに


Visual Studioには、元々コンソール アプリ(.NET Core)ASP.NET Core Web アプリケーションなど色々なProject Templateが用意されています。
既存のTemplateに加えて、『Custom Project Templates』を追加することもできるため、開発チームや自分用に予め用意しておけば、非常に開発が捗ります!!

今日は『Custom Project Templates』の作り方についてまとめていきます。

検証環境


  • Windows10 Pro
  • Visual Studio 2019

上記の環境で、検証を行っています。

Templateの作り方


知らないと何となく難しそうなTemplate作成ですが、比較的簡単に作成することができます。主なTemplateの作り方は、次の2通りです。

  1. 既存ProjectからExportする。
  2. .vstemplateファイルを自作する。

特に1. 既存ProjectからExportする。は非常に簡単で、開発で特定のProjectをテンプレート化したいという場合は、ボタンをクリックするだけでほぼ終わりです。

個人的には、ほとんどの場合が1の方法で作成しています。
なんでも良いので、適当なProjectをExportしてから、カスタマイズした方が.vstemplateファイルのタグを一から入力する必要がなくて、楽だからです。

既存ProjectからTemplateのExport


さっそく、既存ProjectからTemplateを作成していきます。
Visual Studioを開いたら、まずメニューのプロジェクト(P)を選択します。
プロジェクトを選択するとテンプレートのエクスポート(E)があるはずなので、それを選択します。

f:id:EaE:20210125211649p:plain

テンプレートのエクスポート(E)を選択すると出力メニューが開くので、ガイドに沿って進めていきます。

f:id:EaE:20210125211738p:plain

Project Templateを作成する場合は、プロジェクト テンプレート(R)にチェックが入っていることを確認して、出力対象のProjectを選択します。
今回のサンプルには、TargetProjectしか存在しないので、それを選択します。

f:id:EaE:20210125211941p:plain

テンプレート名は新規プロジェクト追加時に表示されるテンプレート名のことで、検索にも使用するので分かりやすい名前を付けておきましょう。
また、.NET Frameworkなど特定のフレームワークに依存する場合は、(.NET Framework)など識別できるようにしておくのがポイントです。

後は完了をクリックすれば、出力は完了です。 出力したテンプレートは、下記のフォルダに出力されます。

%USERPROFILE%\Documents\Visual Studio 2019\My Exported Templates

f:id:EaE:20210125212620p:plain

.zipファイルが確認できれば、出力は完了です。

オリジナルのテンプレートを配置する


完成したProject Templateを配置していきます。オリジナルで作成したものに関しては、User用のフォルダへ配置する必要があります。
(ちなみに、既存ProjectからExportした場合は自動的にUser用フォルダにも出力されます。)

%USERPROFILE%\Documents\Visual Studio 2019\Templates\ProjectTemplates

のフォルダ直下にTemplateを配置していきますが、ここでポイントがあります。
配置する際には、フォルダを.zip圧縮する必要があります。

f:id:EaE:20210125213114p:plain

(展開する必要はありません。)

加えて重要なポイントとして、圧縮したファイルのRootに.vstemplateファイルが含まれている必要があります。

f:id:EaE:20210125213228p:plain

先ほど、作成したTemplateにも.vstemplateファイルが含まれているのが確認できます。 これで準備完了です。

Error回避Tips


1. User用フォルダへの配置忘れ

ちなみにMy Exported Templates側の.zipファイルを修正して、User用フォルダに配置しない。というミスが良くあります。 あくまで、Templates\ProjectTemplates配下に配置したものが読み取られるので注意しましょう。

2. 圧縮方法を間違え

先ほど、.zipファイルにする必要があるといいましたが、ここにもポイントがあります。 自作したTemplateをフォルダごと圧縮してしまうと、.zipファイルはフォルダが入れ子の状態になってしまいます。 あくまで、Rootに.vstemplateファイルが含まれている必要があるので注意しましょう。
(圧縮したいファイルやフォルダを全選択した状態で、送るから圧縮すれば、入れ子にはなりません。)

自作Templateから新規Project作成


それでは最後に、自作TemplateからProjectを作成してみます。 新しいプロジェクトの追加から、先ほどの"SampleExportTemplate (.NET Core)"を検索します。

f:id:EaE:20210125215222p:plain

先ほどの自作Templateが確認できましたね!
後はプロジェクトを作成するだけです。

f:id:EaE:20210125215334p:plain

対象にしたTargetProjectと同じ構成のProjectが作成されたことが確認できました。

既存のテンプレート保存場所


Templateを作成するのであれば、既存Templateに一通り目を通しておくと良いと思います。
下記のフォルダに配置されていますが、くれぐれも壊さないように注意しましょう!!

%ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDE\ProjectTemplates\<Language>\<Locale ID>

まとめ


  • 自作Templateを作るのは意外に簡単。特に既存のProjectからのExport。
  • 自作Templateを配置する際にミスが多いので注意する。

これだけでも十分に便利ですが、今回の方法だと少し不便な部分があります。
例えば、新規プロジェクト作成の際に入力したプロジェクト名に応じて、ファイル名を変更したい場合などは単にExportするだけでは対応ができません。
次は.vstemplateを編集して、より便利なTemplateを作成していきます。