Reputation: 3570
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
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