如何:创建多项目模板

更新:2007 年 11 月

多项目模板可作为两个或多个项目的容器。从“新建项目”对话框中创建基于多项目模板的项目时,模板中包含的每个项目都会添加到解决方案中。

多项目模板被压缩为一个 .zip 文件,其中必须包括下列项:

  • 整个多项目模板的根 .vstemplate 文件。此根 .vstemplate 文件包含“新建项目”对话框中显示的元数据,并指定在何处查找此模板中的项目的 .vstemplate 文件。此文件必须位于 .zip 文件的根目录处。

  • 包含完整项目模板所需文件的一个或多个文件夹。这包括项目的所有代码文件以及项目的 .vstemplate 文件。

例如,一个包含两个项目的多项目模板 .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 元素包含一个 ProjectCollection 元素,该元素具有一个或多个定义所包含项目的 .vstemplate 文件路径的 ProjectTemplateLink 元素。例如:

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

多项目模板的行为也不同于常规模板。多项目模板具有下列唯一特征:

  • 多项目模板中各个项目的名称不能由“新建项目”对话框来分配。而应使用 ProjectTemplateLink 元素的 ProjectName 属性来指定每个项目的名称。有关更多信息,请参见下一节中的第一个示例。

  • 多项目模板可以包含以不同语言编写的项目,但整个模板本身却只能放在具有 ProjectType 元素的一个类别中。

创建多项目模板

  1. 创建要包含在多项目模板中的项目。

  2. 为每个项目创建 .vstemplate 文件。有关更多信息,请参见 如何:创建项目模板如何:手动创建项目模板

  3. 创建将包含多项目模板的元数据的根 .vstemplate 文件。有关更多信息,请参见下一节中的第一个示例。

  4. 选择要包括在模板中的文件和文件夹,右击鼠标,选择“发送到”,然后单击“压缩(zipped)文件夹”。文件和文件夹将被压缩为一个 .zip 文件。

  5. 将 .zip 模板文件放在 Visual Studio 项目模板目录中。默认情况下,此目录为 My Documents\Visual Studio 2008\Templates\ProjectTemplates。

示例

此示例演示一个简单的多项目根 .vstemplate 文件。在此示例中,模板包含两个项目:My Windows Application 和 My Class Library。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。模板包含四个项目,每个解决方案文件夹中放两个。

<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>

请参见

任务

如何:创建项目模板

如何:手动创建项目模板

参考

Visual Studio 模板架构参考

Visual Studio 模板架构参考

SolutionFolder 元素(Visual Studio 模板)

ProjectTemplateLink 元素(Visual Studio 模板)

其他资源

初学者工具包

Visual Studio 模板