方法 : 複数プロジェクトのテンプレートを作成するHow to: Create Multi-Project Templates

複数プロジェクトのテンプレートは、2 つ以上のプロジェクトのコンテナーとして機能します。Multi-project templates act as containers for two or more projects. 複数プロジェクトのテンプレートに基づくプロジェクトが [新しいプロジェクト] ダイアログ ボックスで作成されると、テンプレート内のすべてのプロジェクトがソリューションに追加されます。When a project based on a multi-project template is created from the New Project dialog box, every project in the template is added to the solution.

複数プロジェクトのテンプレートは、次の項目を含み、.zip ファイルに圧縮する必要があります。A multi-project template must include the following items, compressed into a .zip file:

  • 複数プロジェクトのテンプレート全体のルート .vstemplate ファイル。A root .vstemplate file for the entire multi-project template. このルート .vstemplate ファイルは、[新しいプロジェクト] ダイアログ ボックスに表示されるメタデータを含み、このテンプレート内のプロジェクトの .vstemplate ファイルの場所を指定します。This root .vstemplate file contains the metadata that the New Project dialog box displays, and specifies where to find the .vstemplate files for the projects in this template. このファイルは、.zip ファイルのルートに配置する必要があります。This file must be located at the root of the .zip file.

  • 完全なプロジェクト テンプレートに必要なファイルを含む 1 つ以上のフォルダー。One or more folders that contain the files that are required for a complete project template. これにはプロジェクトのすべてのコード ファイルが含まれ、プロジェクトの .vstemplate ファイルも含まれます。This includes all code files for the project, and also a .vstemplate file for the project.

    たとえば、2 つのプロジェクトを含む複数プロジェクトのテンプレート .zip ファイルは、次のファイルとディレクトリを持つことが考えられます。For example, a multi-project template .zip file that has two projects could have the following files and directories:

    MultiProjectTemplate.vstemplateMultiProjectTemplate.vstemplate

    \Project1\Project1.vstemplate\Project1\Project1.vstemplate

    \Project1\Project1.vbproj\Project1\Project1.vbproj

    \Project1\Class.vb\Project1\Class.vb

    \Project2\Project2.vstemplate\Project2\Project2.vstemplate

    \Project2\Project2.vbproj\Project2\Project2.vbproj

    \Project2\Class.vb\Project2\Class.vb

    複数プロジェクトのテンプレートのルート .vstemplate ファイルは、単一プロジェクトのテンプレートとは次の点が異なります。The root .vstemplate file for a multi-project template differs from a single-project template in the following ways:

  • VSTemplate 要素の Type 属性には値 ProjectGroup が含まれます。The Type attribute of the VSTemplate element contains the value ProjectGroup. 例:For example:

    <VSTemplate Version="2.0.0" Type="ProjectGroup"  
        xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">  
    
  • TemplateContent 要素には、含まれるプロジェクトの .vstemplate ファイルへのパスを定義する 1 つ以上の ProjectTemplateLink 要素を持つ ProjectCollection 要素が含まれます。The TemplateContent element contains a ProjectCollection element that has one or more ProjectTemplateLink elements that define the paths to the .vstemplate files of the included projects. 例:For example:

    <TemplateContent>  
        <ProjectCollection>  
            <ProjectTemplateLink>  
                Project1\Project1.vstemplate  
            </ProjectTemplateLink>  
            <ProjectTemplateLink>  
                Project2\Project2.vstemplate  
            </ProjectTemplateLink>  
        </ProjectCollection>  
    </TemplateContent>  
    

    複数プロジェクトのテンプレートは、標準テンプレートとは動作も異なります。Multi-project templates also behave differently than normal templates. 複数プロジェクトのテンプレートには、次の固有の特性があります。Multi-project templates have the following unique characteristics:

  • 複数プロジェクトのテンプレートの個別のプロジェクトには、[新しいプロジェクト] ダイアログ ボックスで名前を割り当てることができません。Individual projects in a multi-project template cannot be assigned names by the New Project dialog box. 代わりに、ProjectTemplateLink 要素の ProjectName 属性を使用して、各プロジェクトの名前を指定します。Instead, use the ProjectName attribute on the ProjectTemplateLink element to specify the name for each project. 詳細については、次のセクションの最初の例を参照してください。For more information, see the first example in the following section.

  • 複数プロジェクトのテンプレートには別の言語で記述したプロジェクトを含めることができますが、テンプレート自体の全体は ProjectType 要素を使用して 1 つのカテゴリにのみ配置できます。Multi-project templates can contain projects written in different languages, but the entire template itself can only be put in one category by using the ProjectType element.

複数プロジェクトのテンプレートを作成するにはTo create a multi-project template

  1. 複数プロジェクトのテンプレートに含めるプロジェクトを作成します。Create the projects to include in the multi-project template.

  2. すべてのプロジェクトの .vstemplate ファイルを作成します。Create .vstemplate files for every project. 詳細については、「方法 : プロジェクト テンプレートを作成する」を参照してください。For more information, see How to: Create Project Templates.

  3. 複数プロジェクトのテンプレート用のメタデータを含めるルート .vstemplate ファイルを作成します。Create a root .vstemplate file that to contain the metadata for the multi-project template. 詳細については、次のセクションの最初の例を参照してください。For more information, see the first example in the following section.

  4. テンプレートに含めるファイルおよびフォルダーを選択して右クリックし、[送る] をクリックしてから [圧縮 (zip 形式) フォルダー] をクリックします。Select the files and folders to include in your template, right-click the selection, click Send To, and then click Compressed (zipped) Folder. ファイルとフォルダーが .zip ファイルに圧縮されます。The files and folders are compressed into a .zip file.

  5. .zip テンプレート ファイルを Visual StudioVisual Studio プロジェクト テンプレートのディレクトリに配置します。Put the .zip template file in the Visual StudioVisual Studio project template directory. 既定では、このディレクトリは \My Documents\Visual Studio バージョン\Templates\ProjectTemplates\ です。By default, this directory is \My Documents\Visual Studio Version\Templates\ProjectTemplates\.

Example

基本的なマルチプロジェクトのルート .vstemplate ファイルの例を以下に示します。This example shows a basic multi-project root .vstemplate file. この例では、テンプレートには My Windows ApplicationMy Class Library の 2 つのプロジェクトが含まれています。In this example, the template contains two projects, My Windows Application and My Class Library. ProjectName 要素の ProjectTemplateLink 属性は、Visual StudioVisual Studio がこのプロジェクトに割り当てる名前を設定します。The ProjectName attribute on the ProjectTemplateLink element sets the name for Visual StudioVisual Studio to assign this project. ProjectName 属性が存在しない場合、.vstemplate ファイルの名前がプロジェクト名として使用されます。If the ProjectName attribute does not exist, the name of the .vstemplate file is used as the project name.

<VSTemplate Version="2.0.0" Type="ProjectGroup"  
    xmlns="http://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>  

Example

この例では、SolutionFolder 要素を使用して、プロジェクトを Math Classes および Graphics Classes という 2 つのグループに分割します。This example uses the SolutionFolder element to divide the projects into two groups, Math Classes and Graphics Classes. テンプレートには 4 つのプロジェクトが含まれ、その 2 つは各ソリューション フォルダーに配置されます。The template contains four projects, two of which are placed in each solution folder.

<VSTemplate Version="2.0.0" Type="ProjectGroup"  
    xmlns="http://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>  

関連項目See Also

プロジェクトと項目テンプレートの作成 Creating Project and Item Templates
Visual Studio テンプレート スキーマ参照 Visual Studio Template Schema Reference
方法 : プロジェクト テンプレートを作成する How to: Create Project Templates
Visual Studio テンプレート スキーマ参照 Visual Studio Template Schema Reference
SolutionFolder 要素 (Visual Studio テンプレート) SolutionFolder Element (Visual Studio Templates)
ProjectTemplateLink 要素 (Visual Studio テンプレート)ProjectTemplateLink Element (Visual Studio Templates)