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

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

複数プロジェクトのテンプレートには、2 つ以上のプロジェクト テンプレートと ProjectGroup 型のルート テンプレートが含まれます。A multi-project template contains two or more project templates, and a root template of type ProjectGroup.

複数プロジェクトのテンプレートは、1 つのプロジェクトのテンプレートとは動作が異なります。Multi-project templates behave differently than single project templates. これらには、次の固有の特性があります。They have the following unique characteristics:

  • 複数プロジェクトのテンプレートの個別のプロジェクトには、[新しいプロジェクト] ダイアログ ボックスで名前を割り当てることができません。Individual projects in a multi-project template cannot be assigned names in the New Project dialog box. 代わりに、.vstemplate ファイルの ProjectTemplateLink 要素の ProjectName 属性を使用して、各プロジェクトの名前を指定します。Instead, use the ProjectName attribute on the ProjectTemplateLink element in the .vstemplate file to specify a name for each project.

  • 複数プロジェクトのテンプレートには別の言語のプロジェクトを含めることができますが、テンプレート全体そのものは 1 つのカテゴリにのみ配置できます。Multi-project templates can contain projects for different languages, but the entire template itself can only be put in one category. .vstemplate ファイルの ProjectType 要素でテンプレートのカテゴリを指定します。Specify the template category in the ProjectType element of the .vstemplate file.

複数プロジェクトのテンプレートは、次の項目を含み、.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 metadata that the New Project dialog box displays, and specifies where to find the .vstemplate files for the projects in the template. このファイルは、.zip ファイルのルートに配置する必要があります。This file must be located at the root of the .zip file.

  • 完全なプロジェクト テンプレートに必要なファイルを含む 2 つ以上のフォルダー。Two 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 属性には Project の代わりに値 ProjectGroup が含まれます。The Type attribute of the VSTemplate element has the value ProjectGroup instead of Project. 例: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>
    

既存のソリューションから複数プロジェクトのテンプレートを作成するにはTo create a multi-project template from an existing solution

  1. ソリューションを作成して 2 つ以上のプロジェクトを追加します。Create a solution and add two or more projects.

  2. テンプレートにエクスポートする準備ができるまで、プロジェクトをカスタマイズします。Customize the projects until they are ready to be exported to a template.

  3. [プロジェクト] メニューの [テンプレートのエクスポート...] を選択します。On the Project menu, choose Export Template....

    テンプレートのエクスポート ウィザードが開きます。The Export Template Wizard opens.

  4. [テンプレートの種類の選択] ページで、[プロジェクト テンプレート] を選択します。On the Choose Template Type page, select Project Template. テンプレートにエクスポートするプロジェクトを選択し、[次へ] を選択します。Select the project you want to export to a template, and then choose Next.

  5. [テンプレート オプションの選択] ページで、テンプレートの名前および省略可能な説明、アイコン、プレビュー画像を入力します。On the Select Template Options page, enter a name and optional description, icon, and preview image for your template. [完了] を選択します。Choose Finish.

    プロジェクトが .zip ファイルにエクスポートされ、指定した出力場所に置かれます。The project is exported into a .zip file and placed in the specified output location.

    注意

    各プロジェクトはテンプレートに個別にエクスポートする必要があるため、ソリューションのプロジェクトごとに上記の手順を繰り返します。Each project must be exported to a template separately, so repeat the preceding steps for each project in the solution.

  6. テンプレートのディレクトリを作成し、プロジェクトごとにサブディレクトリを作ります。Create a directory for your template, with a subdirectory for each project.

  7. 各プロジェクトの .zip ファイルの内容を、作成した対応するサブディレクトリに抽出します。Extract the contents of each project's .zip file into the corresponding subdirectory that you just created.

  8. ベース ディレクトリ内に、.vstemplate ファイル拡張子を持つ XML ファイルを作成します。In the base directory, create an XML file with a .vstemplate file extension. このファイルには、複数プロジェクトのテンプレートのメタデータが含まれます。This file contains the metadata for the multi-project template. ファイルの構造については、この後の例をご覧ください。See the example that follows for the structure of the file. プロジェクトごとに .vstemplate ファイルの相対パスを指定してください。Be sure to specify the relative path to each project's .vstemplate file.

  9. ベース ディレクトリを選び、右クリック メニューまたはコンテキスト メニューから、[送る] > [圧縮 (zip 形式) フォルダー] の順に選びます。Select the base directory, and from the right-click or context menu, choose Send to > Compressed (zipped) folder.

    ファイルとフォルダーが .zip ファイルに圧縮されます。The files and folders are compressed into a .zip file.

  10. ユーザー プロジェクト テンプレートのディレクトリに .zip ファイルをコピーします。Copy the .zip file into the user project template directory. 既定では、このディレクトリは %USERPROFILE%\Documents\Visual Studio <バージョン>\Templates\ProjectTemplates です。By default, this directory is %USERPROFILE%\Documents\Visual Studio <version>\Templates\ProjectTemplates.

  11. Visual Studio で [新しいプロジェクト] ダイアログ ボックスを開き、テンプレートが表示されることを確認します。In Visual Studio, open the New Project dialog box and verify that your template appears.

2 つのプロジェクトの例Two-project 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. ProjectTemplateLink 要素の ProjectName 属性で、プロジェクトに適用する名前を指定します。The ProjectName attribute on the ProjectTemplateLink element specifies the name that is given to the project.

ヒント

ProjectName 属性を指定しない場合、.vstemplate ファイルの名前がプロジェクト名として使用されます。If the ProjectName attribute is not specified, 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 with solution folders

この例では、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
方法 : プロジェクト テンプレートを作成するHow to: Create project templates
Visual Studio テンプレート スキーマ参照 (機能拡張)Visual Studio template schema reference (extensibility)
SolutionFolder 要素 (Visual Studio テンプレート)SolutionFolder element (Visual Studio templates)
ProjectTemplateLink 要素 (Visual Studio テンプレート)ProjectTemplateLink element (Visual Studio templates)