如何在单个 NuGet 包中传送多个“dotnet new”模板?
How do I ship multiple `dotnet new` templates inside a single NuGet package?
我有一个包含三个模板的 dotnet new
模板项目:
- 图书馆
- 无头 .NET Core 服务
- ASP.NET 核心 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::*"
我做错了什么?为什么我安装这个包时只显示一个模板?所有相关的来源、模板配置等都可以通过点击我包含的存储库链接找到。
我遇到了同样的问题。我通过在每个模板的 template.json 文件中为 groupIdentity 设置不同的值来解决它。
https://github.com/dotnet/templating/wiki/%22Runnable-Project%22-Templates#configuration
groupIdentity (optional)
The ID of the group this template belongs to. When combined with the
tags section, this allows multiple templates to be displayed as
one, with the the decision for which one to use being presented as a
choice in each one of the pivot categories (keys).
我有一个包含三个模板的 dotnet new
模板项目:
- 图书馆
- 无头 .NET Core 服务
- ASP.NET 核心 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::*"
我做错了什么?为什么我安装这个包时只显示一个模板?所有相关的来源、模板配置等都可以通过点击我包含的存储库链接找到。
我遇到了同样的问题。我通过在每个模板的 template.json 文件中为 groupIdentity 设置不同的值来解决它。
https://github.com/dotnet/templating/wiki/%22Runnable-Project%22-Templates#configuration
groupIdentity (optional)
The ID of the group this template belongs to. When combined with the tags section, this allows multiple templates to be displayed as one, with the the decision for which one to use being presented as a choice in each one of the pivot categories (keys).