【问题标题】:How can a create a template solution in VS 2019 where projects lie in folders?如何在项目位于文件夹中的 VS 2019 中创建模板解决方案?
【发布时间】:2021-07-11 19:27:30
【问题描述】:

我一直在关注这个tutorial 创建一个多项目模板。它是成功的,即使我使用的是较新的版本(3,而不是 2)。

问题是,我想在某些文件夹中有一些项目。因此,当我使用/应用模板时,我希望在某些文件夹中有某些项目。为了便于理解,我附上了两张截图。

.vstemplate 文件如下所示:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup">
  <TemplateData>
    <Name>Multi-Project Template Sample</Name>
    <Description>&lt;Hacuna matata;</Description>
    <ProjectType>CSharp</ProjectType>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
        <ProjectCollection>
            <ProjectTemplateLink ProjectName="ConsoleApp1">
                Part1\ConsoleApp1\MyTemplate.vstemplate
            </ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="Liviu">
                Part2\ClassLibrary1\MyTemplate.vstemplate
            </ProjectTemplateLink>
        </ProjectCollection>
    </TemplateContent>
</VSTemplate>

我尝试了ProjectName="Part1\ConsoleApp1" 之类的组合,但我只得到了错误。我一直在看template parameters,那里没什么希望。

【问题讨论】:

    标签: .net visual-studio


    【解决方案1】:

    如果您需要一个新文件夹,您可以使用 VS 向解决方案添加一个新文件夹。

    然后您可以在文件夹中添加一个新项目。

    【讨论】:

    • 感谢您的回答,但是我希望从一开始就拥有这些文件夹 - 无需手动创建它们。
    • 它在 CSPROJ 文件中以这种方式工作(当使用 .NET Core、.NET Standard 或使用新文件格式的 .NET Framework 时)。文件夹被自动识别。在解决方案中,情况并非如此。
    • 抱歉,在此期间我一直在尝试其他一些事情。您是说不可能创建一个自动创建旧版本的解决方案模板吗?
    • @LiviuSosu 不,这与创造无关。它是关于自动识别文件夹。在项目中工作。不适用于解决方案。
    【解决方案2】:

    项目和文件夹的结构在 .SLN 文件中指定。每个项目和每个文件夹都有一个这样的项目条目:

    Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApplication.Services", "SampleApplication.Services\SampleApplication.Services.csproj", "{780D4A9C-AB47-4B3C-8402-8B2C85E9B904}"
    EndProject
    Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{6B99D4BE-213F-4F2F-88A1-E7C9933EF3C6}"
    EndProject
    

    (后面的“项目”是文件夹)。

    该行第一个GUID是项目类型,第二个是项目的唯一标识符。

    .SLN 文件的末尾应该有一个 GlobalSection(NestedProjects)

    GlobalSection(NestedProjects) = preSolution
            {780D4A9C-AB47-4B3C-8402-8B2C85E9B904} = {6B99D4BE-213F-4F2F-88A1-E7C9933EF3C6}
    EndGlobalSection
    

    每一行都定义了一个项目的父文件夹(也是一个项目),格式如下:

    {project GUID} = {folder GUID}
    

    【讨论】:

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