方法 : 複数プロジェクトのテンプレートを作成する
更新 : 2007 年 11 月
複数プロジェクトのテンプレートは、2 つ以上のプロジェクトのコンテナとして機能します。複数プロジェクトのテンプレートに基づくプロジェクトが [新しいプロジェクト] ダイアログ ボックスで作成されると、テンプレートに含まれるすべてのプロジェクトがソリューションに追加されます。
複数プロジェクトのテンプレートは、次の項目を含み、単一の .zip ファイルに圧縮する必要があります。
複数プロジェクトのテンプレート全体のルート .vstemplate ファイル。このルート .vstemplate ファイルは、[新しいプロジェクト] ダイアログ ボックスに表示されるメタデータを含み、このテンプレートに含まれるプロジェクトの .vstemplate ファイルの場所を指定します。このファイルは、.zip ファイルのルートに配置する必要があります。
完全なプロジェクト テンプレートに必要なファイルを含む 1 つ以上のフォルダ。これには、プロジェクトの .vstemplate ファイル以外に、プロジェクトのすべてのコード ファイルも含まれます。
たとえば、2 つのプロジェクトを含む複数プロジェクトのテンプレート .zip ファイルは、次のファイルとディレクトリを持つことが考えられます。
MultiProjectTemplate.vstemplate
\Project1\Project1.vstemplate
\Project1\Project1.vbproj
\Project1\Class.vb
\Project2\Project2.vstemplate
\Project2\Project2.vbproj
\Project2\Class.vb
複数プロジェクトのテンプレートのルート .vstemplate ファイルは、単一のプロジェクから成るテンプレートとは、次の点が異なります。
VSTemplate 要素の Type 属性の値は ProjectGroup です。たとえば、次のとおりです。
<VSTemplate Version="2.0.0" Type="ProjectGroup" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
TemplateContent 要素には、含まれるプロジェクトの .vstemplate ファイルへのパスを定義する 1 つ以上の ProjectTemplateLink 要素を持つ ProjectCollection 要素が含まれます。たとえば、次のとおりです。
<TemplateContent> <ProjectCollection> <ProjectTemplateLink> Project1\Project1.vstemplate </ProjectTemplateLink> <ProjectTemplateLink> Project2\Project2.vstemplate </ProjectTemplateLink> </ProjectCollection> </TemplateContent>
複数プロジェクトのテンプレートは、標準テンプレートとは動作も異なります。複数プロジェクトのテンプレート固有の特性は、次のとおりです。
複数プロジェクトのテンプレートの個別のプロジェクトには、[新しいプロジェクト] ダイアログ ボックスで名前を割り当てることができません。代わりに、ProjectTemplateLink 要素の ProjectName 属性を使用して、各プロジェクトの名前を指定します。詳細については、次のセクションの最初の例を参照してください。
複数プロジェクトのテンプレートには別の言語で記述したプロジェクトを含めることができますが、テンプレート全体は ProjectType 要素で指定される 1 つのカテゴリにのみ配置できます。
複数プロジェクトのテンプレートを作成するには
複数プロジェクトのテンプレートに含めるプロジェクトを作成します。
各プロジェクトの .vstemplate ファイルを作成します。詳細については、「方法 : プロジェクト テンプレートを作成する」および「方法 : プロジェクト テンプレートを手動で作成する」を参照してください。
複数プロジェクトのテンプレート用のメタデータを含めるルート .vstemplate ファイルを作成します。詳細については、次のセクションの最初の例を参照してください。
テンプレートに含めるファイルおよびフォルダを選択して右クリックし、[送る] をポイントし、[圧縮 (zip 形式) フォルダ] をクリックします。ファイルとフォルダが .zip ファイルに圧縮されます。
.zip テンプレート ファイルを Visual Studio プロジェクトのテンプレート ディレクトリに配置します。既定では、このディレクトリは My Documents\Visual Studio 2008\Templates\ProjectTemplates です。
使用例
この例では、単純なマルチプロジェクト ルート .vstemplate ファイルを示します。この例では、テンプレートには My Windows Application と My Class Library の 2 つのプロジェクトが含まれています。ProjectTemplateLink 要素の ProjectName 属性は、Visual Studio がこのプロジェクトに割り当てる名前を設定します。ProjectName 属性が存在しない場合、.vstemplate ファイルの名前がプロジェクト名として使用されます。
<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>Multi-Project Template Sample</Name>
<Description>An example of a multi-project template</Description>
<Icon>Icon.ico</Icon>
<ProjectType>VisualBasic</ProjectType>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink ProjectName="My Windows Application">
WindowsApp\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="My Class Library">
ClassLib\MyTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
この例では SolutionFolder 要素を使用して、プロジェクトを Math Classes と Graphics Classes の 2 つのグループに分けます。テンプレートには 4 つのプロジェクトが含まれ、それぞれのソリューション フォルダに 2 つずつ配置されます。
<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>Multi-Project Template Sample</Name>
<Description>An example of a multi-project template</Description>
<Icon>Icon.ico</Icon>
<ProjectType>VisualBasic</ProjectType>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<SolutionFolder Name="Math Classes">
<ProjectTemplateLink ProjectName="MathClassLib1">
MathClassLib1\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="MathClassLib2">
MathClassLib2\MyTemplate.vstemplate
</ProjectTemplateLink>
</SolutionFolder>
<SolutionFolder Name="Graphics Classes">
<ProjectTemplateLink ProjectName="GraphicsClassLib1">
GraphicsClassLib1\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="GraphicsClassLib2">
GraphicsClassLib2\MyTemplate.vstemplate
</ProjectTemplateLink>
</SolutionFolder>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
参照
処理手順
参照
SolutionFolder 要素 (Visual Studio テンプレート)
ProjectTemplateLink 要素 (Visual Studio テンプレート)