.NET5 自定义项目模板

1、自定义项目模板,推荐使用第二种打包NuGet,使用更方便

  • 创建模板配置文件

       在项目文件夹根目录创建.template.config文件夹,在文件夹下创建新的文件:template.json内容如下:

{
  "$schema": "http://json.schemastore.org/template",
  //必须,模板的作者
  "author": "te.1",
  //必须,模板的分类
  "classifications": [ "Web", "WebAPI.Template" ],
  //必须,模板的名称(改成自己的项目名称)
  "name": "API.Temp",
  //可选,模板的唯一名称
  "identity": "API.template.CSharp",
  //可选,简短名称
  "shortName": "apitemp",
  //必须,模板指定了一些标签
  "tags": {
    "language": "C#",
    "type": "project"
  },
  //可选,要替换的名字 这就就行新建项目时替换成新的名称
  "sourceName": "API.Template",
  //是否生成相同名称的目录,可选
  "preferNameDirectory": true
}

我的项目结构如下:

  • 项目模板安装

   打开命令行进入项目目录,运行以下命令以安装位于当前文件夹的模板:

  • 在 Windows 上:dotnet new -i .\
  • 在 Linux 或 macOS 上:dotnet new -i ./
  • 使用模板新建项目

   使用命令 :dotnet new  apitemp -n Test 创建test项目

 

 创建完成的项目结构:

使用命令 dotnet new -u 查看安装的模板卸载命令,例如下图,可以直接使用命令 dotnet new -u E:\NET\AppletsShare副本 卸载已安装的模板

2、创建模板NuGet包项目

  • 创建模板配置文件

  在项目顶级根目录创建templatepack.csproj修改内容如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <!-- 包类型使用与包Id相同的格式,并由分隔 ; 。 包类型可通过追加 , 和字符串进行版本控制 -->
    <!-- 示例 <PackageType>CustomType1, 1.0.0.0;CustomType2</PackageType>     -->
    <PackageType>Template</PackageType>
    <!-- 指定生成的包所具有的版本 -->
    <PackageVersion>1.0</PackageVersion>
    <!-- 唯一名称,卸载安装时使用 -->
    <PackageId>API.Template</PackageId>
    <!-- 包标题 -->
    <Title>WebApi  Template</Title>
    <!-- 作者名称,多个以分号分隔 -->
    <Authors>te.1</Authors>
    <!-- 包描述 -->
    <Description>创建应用程序时使用的模板。</Description>
    <!--使用默认值即可, 必须设置 <TargetFramework> 设置,以便在运行 pack 命令编译和打包项目时 MSBuild 正常运行。 -->
    <TargetFramework>net5.0</TargetFramework>
    <!-- 标记的分号分隔列表,这些标记用于指定包 -->
    <PackageTags>dotnet-new;templates;contoso</PackageTags>
    <!-- 以下配置可以不管 -->
    <IncludeContentInPack>true</IncludeContentInPack>
    <IncludeBuildOutput>false</IncludeBuildOutput>
    <ContentTargetFolders>content</ContentTargetFolders>
    <NoWarn>$(NoWarn);NU5128</NoWarn>
  </PropertyGroup>
 <!-- 排除bin、obj文件夹  注意:需要把templates换成你的文件路径 -->
  <ItemGroup>
    <Content Include="templates\**\*" Exclude="templates\**\bin\**;templates\**\obj\**" />
    <Compile Remove="**\*" />
  </ItemGroup>
</Project>
  • 生成和安装

   项目结构目录必须如下:

项目根目录
│   templatepack.csproj
└───templates   
   └───.template.config        
        └───template.json

在项目根目录下打开命令行,使用命令dotnet pack 此命令会生成项目,并在 项目根目录\bin\Debug 文件夹中创建一个 NuGet 包,如以下输出所示:

接下来,使用 dotnet new -i PATH_TO_NUPKG_FILE 命令安装模板包文件,完整命令如下。

dotnet new -i E:\NET\AppletsShare副本\bin\Debug\API.Template.1.0.0.nupkg

使用命令 dotnet new -u 查看安装的模板卸载命令,例如下图,可以直接使用命令  dotnet new -u API.Template副本 卸载已安装的模板

  • 使用nuget.exe打包,这种方式打包跟上一种唯一的区别是可以关掉打包时默认排除.开头的文件或文件夹,注意需要先把项目下的bin、obj 文件夹删除掉,否则会把两个文件夹也打包进去
  • NuGet Gallery | Downloads 下载 nuget.exe文件
  • 新建templates.nuspec文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>API.Template</id><!--修改模板id,下面的内容保持默认即可-->
    <version>1.0.0</version>
    <description>
     WebApi  Template, including WebApi      
    </description>
    <authors>muxue</authors>
    <packageTypes>
      <packageType name="Template" />
    </packageTypes>
  </metadata>
</package>
  • 命令行运行:nuget.exe pack templates.nuspec -NoDefaultExcludes -OutputDirectory . 会在当前目录生成 API.Template.1.0.0.nupkg文件
  • 接下来,使用 dotnet new -i PATH_TO_NUPKG_FILE 命令安装模板包文件,完整命令如下。

    dotnet new -i .\API.Template.1.0.0.nupkg

创建项目 命令 :dotnet new  apitemp -n Test 创建test项目

参考:dotnet new 自定义模板 - .NET CLI | Microsoft Docs

          .NET Core - 自定义项目模板 - chaney1992 - 博客园 (cnblogs.com)

posted @ 2021-05-12 11:45  ice.ko  阅读(353)  评论(0编辑  收藏  举报