【问题标题】:Weird folder hierarchy when creating multi-project Visual Studio template创建多项目 Visual Studio 模板时的奇怪文件夹层次结构
【发布时间】:2013-06-24 20:28:57
【问题描述】:

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

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

[解决方案名称] | \--- 解决方案名称.sln | \--- [解决方案名称] | \--- 项目1 | | | \--- Project1.csproj \--- 项目2 | \--- Project2.csproj

现在,我通常期望的是:

[解决方案名称] | \--- 解决方案名称.sln | \--- 项目1 | | | \--- Project1.csproj \--- 项目2 | \--- 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>

谢谢!

【问题讨论】:

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


【解决方案1】:

我遇到了完全相同的问题。我发现 this similar question 建议使用嵌套模板和向导,正要尝试一下...

【讨论】:

  • 嗨,geoid,我实际上知道如何使用向导 DLL 来做到这一点,只是将所有内容移动到正确的文件夹中,但这样做似乎不对,我宁愿在 vstemplate 中有一些东西我可以从一开始就进行配置...
  • 同意,为此不得不求助于向导似乎完全是一种黑客行为。
  • 不知道VS2013是否修复了这个问题,VS2012肯定没有。
  • Visual Studio 2013 出现同样的问题,不知道如何解决。有什么想法吗?
  • 对于@boj 和任何像我一样在谷歌搜索中偶然发现这个问题的人,VS2013 解决了这个问题。见this answer。如果像我一样,您使用的 VS 版本早于该答案中指定的版本,那么我们似乎不走运。 :(
【解决方案2】:

查看here 了解有关此主题的更多信息。也许文档团队会在某个时候记录这一点。

您现在也可以从 VS Marketplace 安装 Amusoft 工具来移动文件夹。它也会更新解决方案和项目间引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    相关资源
    最近更新 更多