【问题标题】:How do I ship multiple `dotnet new` templates inside a single NuGet package?如何在单个 NuGet 包中提供多个“dotnet new”模板?
【发布时间】:2019-10-10 14:25:53
【问题描述】:

我有一个由三个模板组成的dotnet new 模板项目:

  • 图书馆
  • 无头 .NET Core 服务
  • ASP.NET Core Web 应用程序

项目源可以在这里找到(它是 FOSS):https://github.com/petabridge/petabridge-dotnet-new/

我遵循https://docs.microsoft.com/en-us/dotnet/core/tools/custom-templates 此处列出的最佳实践并创建了一个针对所有三个模板的.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <PackageType>Template</PackageType>
    <PackageVersion>1.0</PackageVersion>
    <PackageId>Petabridge.Templates</PackageId>
    <Title>Petabridge.Templates</Title>
    <Authors>Petabridge</Authors>
    <Description>Professional .NET Core templates complete with CI, Docs, and more. Supports library, Akka.NET, and ASP.NET Core application types.</Description>
    <PackageTags>dotnet-new;templates;petabridge;akka;</PackageTags>
    <TargetFramework>netstandard2.0</TargetFramework>
    <PackageReleaseNotes></PackageReleaseNotes>
    <IncludeContentInPack>true</IncludeContentInPack>
    <IncludeBuildOutput>false</IncludeBuildOutput>
    <ContentTargetFolders>content</ContentTargetFolders>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="templates\**\*" Exclude="templates\**\bin\**;templates\**\obj\**" />
    <Compile Remove="**\*" />
  </ItemGroup>

</Project>

可以在此处找到此源的实时版本:https://github.com/petabridge/petabridge-dotnet-new/blob/dev/src/Petabridge.Templates.csproj

运行构建脚本并检查包输出后,我可以看到作为包输出的一部分构建的 NuGet 包肯定包含其中的所有三个模板 - 您可以从Github 在此存储库上发布:https://github.com/petabridge/petabridge-dotnet-new/releases/tag/1.0.1

我的问题是,当我使用最新的 .NET Core 3.0 SDK 将这些模板安装到我的机器上时,我只看到第三个模板(Web 应用程序)出现在安装列表中:

PS> dotnet new -i "Petabridge.Templates::*"

我做错了什么?为什么我安装这个包时只显示一个模板?通过点击我包含的存储库链接,可以找到所有相关的源代码、模板配置等。

【问题讨论】:

    标签: c# .net-core dotnet-new


    【解决方案1】:

    我遇到了同样的问题。我通过在每个模板的 template.json 文件中为 groupIdentity 设置不同的值来解决它。

    https://github.com/dotnet/templating/wiki/%22Runnable-Project%22-Templates#configuration

    groupIdentity(可选)

    此模板所属组的 ID。当与 标签部分,这允许多个模板显示为 一个,决定使用哪一个被呈现为 在每个枢轴类别(键)中进行选择。

    【讨论】:

      猜你喜欢
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      • 2019-08-25
      • 2017-12-12
      • 1970-01-01
      • 2013-10-02
      相关资源
      最近更新 更多