如何:创建多项目模板
多项目模板用作两个或多个项目的容器。 从**“新建项目”**对话框中创建基于多项目模板的项目时,模板中的每个项目都会添加到解决方案中。
多项目模板被压缩为一个 .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 元素将整个模板本身放在一个类别中。
创建多项目模板
创建要包含在多项目模板中的项目。
为每个项目创建 .vstemplate 文件。 有关更多信息,请参见如何:创建项目模板和如何:手动创建项目模板。
创建将包含多项目模板的元数据的根 .vstemplate 文件。 有关更多信息,请参见下一节中的第一个示例。
选择要包括在模板中的文件和文件夹,右击选定内容,单击**“发送到”,然后单击“压缩(zipped)文件夹”**。 文件和文件夹将被压缩为一个 .zip 文件。
将 .zip 模板文件置于 Visual Studio 项目模板目录中。 默认情况下,此目录为 \My Documents\Visual Studio 2010\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>
请参见
任务
参考
SolutionFolder 元素(Visual Studio 模板)
ProjectTemplateLink 元素(Visual Studio 模板)