VS2005 VSテンプレート作成方法まとめ

Visual Studio 2005では、カスタムのプロジェクトテンプレートや
項目テンプレートを作成するのが簡単ですね。
作成方法に関してまとめておきます。

■ プロジェクトテンプレート作成
プロジェクトテンプレートは、VSでプロジェクトを新規作成する際に
選択できるテンプレートのことを指します。

VS2005標準のテンプレートは下記フォルダにZIP形式で保存されているので、
それらを拡張してあげることも可能です。

C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates

私は、NUnit2.2.7用プロジェクトテンプレートを作成するにあたって、
標準のクラスライブラリのテンプレートを別ファイルにコピーし拡張しました。
ちなみに、VS2005では、実際に使用したVSプロジェクトを
テンプレートとしてエクスポートすることも可能です。
(VS2005 Proではできたけど、VS2005 TeamSuitesでは、
このエクスポートのメニューが見当たらないのは何故...??)

下に作成したvstemplateファイルの例を示します。

*.vstemplate例:

<VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <DefaultName>UnitTestClass.cs</DefaultName>
    <Name>NUnit用テストクラス</Name>
    <Description>NUnitを利用したテストクラスです</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>NUnit</ProjectSubType>
    <SortOrder>10</SortOrder>
    <Icon>NUnit.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <References>
      <Reference>
        <Assembly>nunit.framework, Version=2.2.7.0, Culture=neutral, PublicKeyToken=96D09A1EB7F44A77</Assembly>
      </Reference>
    </References>
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">TargetClassTest1.cs</ProjectItem>
  </TemplateContent>
</VSTemplate>

ZIPファイルにはテンプレートのアイコンも含めることができます。
また作成上の注意事項ですが、*.vstemplateファイルで日本語を利用する際には
UTF-8で保存してください。

作成したテンプレートのZIPファイルを下記フォルダへコピーしてあげると、
VSのプロジェクト作成時にマイテンプレートとして選択できるようになります。

\My Documents\Visual Studio 2005\Templates\ProjectTemplates

■ 項目テンプレート作成
項目テンプレートとは、プロジェクトに対して「新しい項目の追加」メニューを
選択した際に、選べる項目のテンプレートのことを指します。

項目テンプレートの作成方法は、プロジェクトテンプレートの作成とほぼ同じです。
これもVS2005標準の項目テンプレートを参考にしながら作成すると簡単です。
標準の項目テンプレートは下のフォルダにインストールされます。

VS2005標準の項目テンプレート
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates

また、同様に作成した項目テンプレートは
My Documents下に配置してあげる必要があります。

作成した項目テンプレートの配置先
\My Documents\Visual Studio 2005\Templates\ItemTemplates

■ コンテンツインストーラの作成
上記で作成したプロジェクトテンプレートや、
項目テンプレート(コードスニペットも可能)を他の開発者に配布したい場合、
コンテンツインストーラを作成することができます。

作成したプロジェクトテンプレートと項目テンプレートのZIPファイルに加えて、
*.vscontentの拡張子でXMLファイルを作成してあげます。

*.vscontent例 :

<VSContent xmlns="http://schemas.microsoft.com/developer/vscontent/2005">
    <Content>
        <FileName>NUnit2.2.7ProjectTemplate.zip</FileName>
        <DisplayName>NUnit2.2.7用テストプロジェクトテンプレート</DisplayName>
        <Description>NUnit2.2.7でテスト駆動開発を行うためのプロジェクトテンプレートです</Description>
        <FileContentType>VSTemplate</FileContentType>
        <ContentVersion>1.0</ContentVersion>
        <Attributes>
            <Attribute name="ProjectType" value="Visual C#"/>
            <Attribute name="TemplateType" value="Project"/>
        </Attributes>
    </Content>
    <Content>
        <FileName>NUnit2.2.7UnitClass.zip</FileName>
        <DisplayName>NUnit2.2.7用単体テストクラステンプレート</DisplayName>
        <Description>NUnit2.2.7でテスト駆動開発を行うための単体テストクラスです</Description>
        <FileContentType>VSTemplate</FileContentType>
        <ContentVersion>1.0</ContentVersion>
        <Attributes>
            <Attribute name="ProjectType" value="Visual C#"/>
            <Attribute name="TemplateType" value="Item"/>
        </Attributes>
    </Content>
</VSContent>

作成したvscontentファイルとそれぞれのテンプレートZIPファイルをまとめて
ZIP形式で圧縮し、ファイル拡張子をVSIに変更すればインストーラのできあがりです。

このインストーラを実行すると、My Document下の各テンプレートフォルダに
作成したテンプレートZIPファイルがインストールされます。
ちなみに、インストールの作成者を表示するには、
インストーラのファイルに対して署名してあげる必要があるみたいです。

■ 関連リンク
私が参考にしたURLもまとめておきます。

MSDNライブラリ - Visual Studio テンプレート
http://msdn2.microsoft.com/ja-JP/library/6db0hwky(VS.80).aspx

VSIコンテンツインストーラの作成
http://msdn2.microsoft.com/ja-JP/library/ms185314(VS.80).aspx