.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修改内容如下:

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