创建多项目Visual Studio模板时奇怪的文件夹层次结构

时间:2013-06-27 11:04:17

标签: templates visual-studio-2012 visual-studio-templates

我正在为Visual Studio 2012手动创建一个多项目模板,我遵循了此页面中的指南:http://msdn.microsoft.com/en-us/library/ms185308.aspx

我遇到的问题是使用此模板创建了一个奇怪的文件夹结构,这不是我通常所期望的。我得到的解决方案名为SolutionName的文件夹结构:

[SolutionName]
     |
     \--- SolutionName.sln
     |
     \--- [SolutionName]
               |
               \--- Project1
               |       |
               |       \--- Project1.csproj
               \--- Project2
                       |
                       \--- Project2.csproj

现在,我通常会期待的是:

[SolutionName]
     |
     \--- SolutionName.sln
     |
     \--- Project1
     |       |
     |       \--- Project1.csproj
     \--- Project2
             |
             \--- Project2.csproj

有没有办法实现第二个文件夹结构?

此外,在模板中指定解决方案文件夹时,它们也被创建为真实文件夹,有什么办法可以避免吗?

这是我的多项目vstemplate文件的外观:

<?xml version="1.0"?>
<VSTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Type="ProjectGroup" Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <Name>My Multi-Solution Template</Name>
    <Description>No Description.</Description>
    <Icon>__TemplateIcon.png</Icon>
    <PreviewImage>__PreviewImage.png</PreviewImage>
    <ProjectType>CSharp</ProjectType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder> <!-- No use in trying false here. -->
    <DefaultName>SolutionName</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <LocationField>Enabled</LocationField>
  </TemplateData>
  <TemplateContent>
    <ProjectCollection>
      <SolutionFolder Name="Application">
    <SolutionFolder Name="Tests">
      <ProjectTemplateLink ProjectName="$safeprojectname$.UnitTests">UnitTests\UnitTests.vstemplate</ProjectTemplateLink>
    </SolutionFolder>
    <ProjectTemplateLink ProjectName="$safeprojectname$.Core">Core\Core.vstemplate</ProjectTemplateLink>
    <ProjectTemplateLink ProjectName="$safeprojectname$.Infrastructure">Infrastructure\Infrastructure.vstemplate</ProjectTemplateLink>
    <ProjectTemplateLink ProjectName="$safeprojectname$.Model">Model\Model.vstemplate</ProjectTemplateLink>
      </SolutionFolder>
      <SolutionFolder Name="Service">
    <ProjectTemplateLink ProjectName="$safeprojectname$.ServiceHost">ServiceHost\ServiceHost.vstemplate</ProjectTemplateLink>
    <ProjectTemplateLink ProjectName="$safeprojectname$.ServiceLibrary">ServiceLibrary\ServiceLibrary.vstemplate</ProjectTemplateLink>
      </SolutionFolder>
    </ProjectCollection>
    <CustomParameters />
  </TemplateContent>
</VSTemplate>

谢谢!

2 个答案:

答案 0 :(得分:0)

我有完全相同的问题。我发现this similar question有使用嵌套模板和向导的建议,我即将试用...

答案 1 :(得分:0)

检查here以获得有关此主题的其他信息。也许文档团队会在某个时候对此进行记录。

您还可以从VS Marketplace安装Amusoft工具来立即移动文件夹。它将同时更新解决方案和项目间的引用。