방법: 다중 프로젝트 템플릿 만들기How to: Create multi-project templates

다중 프로젝트 템플릿은 두 개 이상의 프로젝트에 대한 컨테이너로 사용됩니다.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.

다중 프로젝트 템플릿은 ProjectGroup 형식의 루트 템플릿이 있는 2개 이상의 프로젝트 템플릿입니다.A multi-project template has two or more project templates, and a root template of type ProjectGroup.

또한 다중 프로젝트 템플릿은 단일 프로젝트 템플릿 다르게 작동합니다.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.

  • 다중 프로젝트 템플릿에는 다른 언어로 작성된 프로젝트가 포함될 수 있지만 전체 템플릿 자체는 하나의 범주에만 배치될 수 있습니다.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.

  • 전체 프로젝트 템플릿에 필요한 파일이 포함된 둘 이상의 폴더입니다.Two or more folders that contain the files that are required for a complete project template. 폴더에는 프로젝트에 대한 모든 코드 파일이 포함되고 프로젝트에 대한 vstemplate 파일도 포함됩니다.The folders include all code files for the project, and also a vstemplate file for the project.

예를 들어 두 개의 프로젝트가 포함된 다중 프로젝트 템플릿 .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 파일에 대한 경로를 정의하는 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. 솔루션을 만들고 두 개 이상의 프로젝트를 추가합니다.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 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.

두 프로젝트 예제Two-project example

이 예제에서는 기본 다중 프로젝트 루트 vstemplate 파일을 보여줍니다.This example shows a basic multi-project root vstemplate file. 이 예제에서 템플릿에는 My Windows Application 프로젝트와 My Class Library 프로젝트가 있습니다.In this example, the template has 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 ClassesGraphics Classes의 두 그룹으로 나눕니다.This example uses the SolutionFolder element to divide the projects into two groups, Math Classes and Graphics Classes. 이 템플릿에는 각 솔루션 폴더에 2개가 포함되는 4개의 프로젝트가 있습니다.The template has 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