以下の内容はhttps://shikaku-sh.hatenablog.com/entry/howto-make-visualstudio-itemtemplateより取得しました。


VisualStudio 項目テンプレートの作り方

C# 開発環境を Visual Studio 2019 に切り替えたので、いままで使っていた項目テンプレートの移行を機に、項目テンプレートの作り方などを整理しました。

GitHub に「VisualStudio Extensions」として公開しました。(テンプレートギャラリーには公開していません)

項目テンプレートって、どんなもの?

f:id:shikaku_sh:20191001091838p:plain:w400
3つテンプレートを追加してみた

こんな感じで、作成したテンプレートが「新しい項目の追加」のウィンドウに表示されるようになります。たとえば私が作成した「RegionClass」を選択すると、最初から region ディレクティブが設定された状態のファイルが作成されます。便利。

f:id:shikaku_sh:20191001091908p:plain:w400
RegionClass は #region が最初から設定済み!

項目テンプレートの構成

  • 設定ファイル (.vstemplate)
  • テンプレート記述ファイル (.cs)
  • イコン画

項目テンプレートは上記の3つのファイルを (.zip) ファイルに圧縮して次のフォルダーに配置します。(C# の例です)

f:id:shikaku_sh:20191001092007p:plain:w400
zip ファイルを配置するだけで OK!

PC > ドキュメント > Visual Studio 20xx > Templates > ItemTemplates > Visual C#

設定ファイル (.vstemplate)

RegionClass」項目テンプレートの (.vstemplate) ファイルを作成した例がこちら。

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <DefaultName>RegionClass.cs</DefaultName>
    <Name>RegionClass</Name>
    <Description>Region Directive で区切られた空の Public Class テンプレートです。</Description>
    <ProjectType>CSharp</ProjectType>
    <SortOrder>10</SortOrder>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <References />
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">RegionClass.cs</ProjectItem>
  </TemplateContent>
</VSTemplate>

見ての通り拡張子は .vstemplate と専用のものになっていますが、中身は単純な XML です。重要な要素は次。

パラメーター 説明
TemplateData 必須の要素。新しい項目の追加 ダイアログ ボックスで表示される情報。
TemplateContent 必須の要素。テンプレートの内容を指定。

TemplateData の子要素は次。

パラメーター 説明
Name 必須の要素。新しい項目の追加 ダイアログ ボックスで表示される表示されるテンプレートの名前。
Description 必須の要素。新しい項目の追加 ダイアログ ボックスで表示される表示されるテンプレートの説明文(右端)。
Icon 必須の要素。新しい項目の追加 ダイアログ ボックスで表示される表示されるアイコン。
ProjectType 必須の要素。CSharp, VisualBasic, Web などのテンプレートの分類を表すテキスト。

テンプレート記述ファイル (.cs)

RegionClass」項目テンプレートの (.cs) ファイルを作成した例がこちら。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace $rootnamespace$
{
    /// <summary>
    /// $safeitemname$ クラスは、***をサポートするためのクラスです。
    /// </summary>
    public class $safeitemname$
    {
        #region Fields
        
        #endregion
        
        #region Properties
        
        #endregion

        #region Initializes

        /// <summary>
        /// <see cref="$safeitemname$"/> クラスの新しいインスタンスを初期化します。
        /// </summary>
        public $safeitemname$(){  }
        
        #endregion

        #region Events
        
        #endregion

        #region Public Methods
        
        #endregion
        
        #region Private Methods
        
        #endregion
    }
}

region ディレクティブによるコードブロックを用意することで、折りたたみ・展開のしやすいテンプレートになっています。また、コンストラクターとクラスの XML Documentation を最初から設定することで、コメントが充実しやすいようにしてあります。 1

このテンプレートの中では「$safeitemname$」や「$rootnamespace$」といった、特殊なテンプレート パラメーターが利用されています。テンプレート パラメーターを利用することで、完全に一様なテンプレートではなく、ファイル(インスタンス)化するときにあわせて、パラメーターの値を自動置換してくれます。

たとえば、$safeitemname$ だと、ファイル名が Samples.cs なら Samples に置換され、Samples.Sample1.cs なら Samples_Sample1 になります。

パラメーター 説明
safeitemname ファイルの名前。(全でない文字とスペースはすべてアンダースコア文字に置き換えられます)
rootnamespace 現在のプロジェクトのルート名前空間

アイコンファイル

f:id:shikaku_sh:20191001092127p:plain:w400
greenfish icon editor pro で編集した

  • 32x32 (256 colors)
  • 16x16 (256 colors)

なにかしらの雛形ファイルから作りだすと楽。(リンクは私の作成したファイル)

2つのサイズに対応しておけばよいです。Visual Studio で最も小さいアイコンのサイズは、16 x 16 です。 最大は 32 x 32 です。アイコンを設計するときに、全体の 16 x 16、24 x 24、または 32 x 32 のフレームいっぱいにならないように留意してください。2

アイコンファイルの編集は手間なので「greenfish icon editor pro」などの編集用ソフトウェアを利用しましょう。(zip ファイル形式のポータブル版がおすすめ)私が GitHub にあげた「VisualStudio Extensions」は、Visual Studio のアイコンデザインに近いものにしてあります。

アイコンのデザインは、「Visual Studio のイメージとアイコン」にあるとおり、おすすめされるテーマがあるので、それに従えばよいと思います。

サンプル

GitHub にて公開しています。

参考

  • 作者:結城 浩
  • 発売日: 2004/06/19
  • メディア: 大型本


  1. XML Documentation の仕様についてはこちら

  2. マイクロソフトの説明 (URL) より




以上の内容はhttps://shikaku-sh.hatenablog.com/entry/howto-make-visualstudio-itemtemplateより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14