Paul McLean
Paul McLean

Reputation: 3570

Multi Project Visual Studio Templates - Specify where to create individual project folders

I'm creating a multi-project Visual Studio template. This template has multiple projects specified as such -

<VSTemplate Version="2.0.0" Type="ProjectGroup"
    xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
    <TemplateData>
        <Name>CompanyName Microservice</Name>
        <Description>All projects needed for a CompanyName microservice.</Description>
        <Icon>Icon.ico</Icon>
        <ProjectType>CSharp</ProjectType>
    </TemplateData>
    <TemplateContent>
        <ProjectCollection>
            <ProjectTemplateLink ProjectName="CompanyName.Services.$safeprojectname$" CopyParameters="true">
                CompanyName.Service\MyTemplate.vstemplate
            </ProjectTemplateLink>
            
            <ProjectTemplateLink ProjectName="CompanyName.Services.$safeprojectname$.Data" CopyParameters="true">
                CompanyName.Service.Data\MyTemplate.vstemplate
            </ProjectTemplateLink>
            
            <ProjectTemplateLink ProjectName="CompanyName.Services.$safeprojectname$.Test" CopyParameters="true">
                CompanyName.Service.Test\MyTemplate.vstemplate
            </ProjectTemplateLink>
            
            <ProjectTemplateLink ProjectName="CompanyName.Services.$safeprojectname$.WebApi" CopyParameters="true">
                CompanyName.Service.WebApi\MyTemplate.vstemplate
            </ProjectTemplateLink>
            
            <ProjectTemplateLink ProjectName="CompanyName.Services.$safeprojectname$.WebApi.Client" CopyParameters="true">
                CompanyName.Service.WebApi.Client\MyTemplate.vstemplate
            </ProjectTemplateLink>
        </ProjectCollection>
    </TemplateContent>
</VSTemplate>

When I use Visual Studio's Add > New Project menu option, I can specify this template, and type a name for it (eg. "AuthService").

Currently, the projects are created correctly in Visual Studio, but in the underlying Windows file system, a single folder called AuthService is created, and 5 folders (1 for each project) are created inside this folder.

Instead of creating a new AuthService folder, how would I go about specifying to create those 5 individual project folders in the root of the solution folder?

Upvotes: 1

Views: 418

Answers (1)

Jack J Jun- MSFT
Jack J Jun- MSFT

Reputation: 5986

You can choose their path when you first create the project, and if you do, you can move it through file move,here is the code:

public static void FolderMove(string srcFolderPath, string destFolderPath)
        {
            if (destFolderPath[destFolderPath.Length - 1] != Path.DirectorySeparatorChar)
                destFolderPath += Path.DirectorySeparatorChar;
            if (!Directory.Exists(destFolderPath))
                Directory.CreateDirectory(destFolderPath);
            string[] fileList = Directory.GetFileSystemEntries(srcFolderPath);
            foreach (string file in fileList)
            {
                if (Directory.Exists(file))
                {
                    FolderMove(file, destFolderPath + Path.GetFileName(file));
                    //Directory.Delete(file);
                }
                else
                    File.Move(file, destFolderPath + Path.GetFileName(file));
            }
            Directory.Delete(srcFolderPath);
        }

Upvotes: 0

Related Questions