1. 程式人生 > >使用.Net Core CLI命令dotnet new建立自定義模板

使用.Net Core CLI命令dotnet new建立自定義模板

文章起源來自一篇部落格:使用 .NET CORE 建立 專案模板,模板專案,Template - DeepThought - 部落格園
之前使用Abp的時候就很認同Abp建立模板專案的方式。想不到.Net Core出了更讚的方式建立模板。之前寫過一個系列文章,有不少對Abp框架的改動(見文章:基於.NetCore和ABP框架如何讓Windows服務執行Quartz定時作業 - repeatedly - 部落格園),如果將其加入自定義模板,應該是一個不錯的想法。
本篇文章就對該專案著手改造。專案程式碼地址:DotNetCore_Practice/ABP.WindowsService at master · PuzzledAlien/DotNetCore_Practice

系統必備

.NET Core 2.2 SDK 或更高版本。

搭建模板專案

因為是對現有的專案改造,將其作為模板進行改造,所以就直接在原有的專案上處理。私以為實際專案使用的話,可以建立一個目錄名為AbpWindowsServiceTemplate,然後將專案拷貝進去。不多廢話了。

  1. 建立資料夾,名為.template.config
  2. 在該檔案下,建立檔案template.json
  3. 開啟檔案,模板配置內容如下
{
 "$schema": "http://json.schemastore.org/template",
 "author": "TemplateAuthor",
 "classifications": [ "Console","WebApi" ],
 "name": "MyJobTemplate",
 "identity": "MyJobTemplate",
 "groupIdentity": "MyJobTemplate",
 "shortName": "JT",
 "tags": {
   "language": "C#",
   "type": "project"
 },
 "sourceName": "MyJob",
 "preferNameDirectory": true
}

儲存配置之後,這就算搭建成功。當然這是搭建一個專案的最基本配置,詳細配置參考請查閱 json.schemastore.org/template

基礎配置說明

  • $schema:template.json 檔案的 JSON 架構。預設值使用http://json.schemastore.org/template
  • author:模板作者
  • classifications:模板特徵標識。上文舉例的配置是因為我自定義的模板包括了console和webapi。
  • identity:此模板的唯一名稱
  • name:使用者看到的模板名稱
  • shortName:短名稱。當使用CLI命令建立模板專案時,使用短名稱將利於使用。
  • sourceName:模板替換的關鍵文字,使用時需要注意,要選擇合適的替換文字,不然容易誤傷程式碼。

如何使用

本地安裝模板

在資料夾.template.config所在目錄執行命令

dotnet  new  -i  .

上面的命令使用的是相對路徑進行安裝,還可以使用絕對路徑安裝。先解除安裝再嘗試一下絕對路徑安裝。

解除安裝模板

執行解除安裝命令

dotnet new -u

執行之後可以看到羅列處理的所有已經安裝的模板,以及相應的解除安裝命令。找到需要解除安裝的模板,類似下文。

 D:\GitHub\DotNetCore_Practice\ABP.WindowsService
    Templates:
      MyJobTemplate (JT) C#
    Uninstall Command:
      dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService

執行解除安裝命令

dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService

結果如下,解除安裝成功,可以通過命令dotnet new -l檢視是否解除安裝成功

PS D:\TestTemplate> dotnet new -u D:\GitHub\DotNetCore_Practice\ABP.WindowsService\Demo.MyJob
PS D:\TestTemplate>

絕對路徑安裝

解除安裝模板之後,嘗試絕對路徑安裝模板。嘗試如下,安裝成功

PS D:\TestTemplate> dotnet new -i D:\GitHub\DotNetCore_Practice\ABP.WindowsService\Demo.MyJob

命令生成專案

PS D:\TestTemplate> dotnet new JT -n Test -o .
The template "MyJobTemplate" was created successfully.

JT是模板配置檔案中指定的shortName。
-n指定的是將專案中出現的所有文字MyJob替換為Test,因為配置中sourceName是MyJob,可按需配置。
-o指定的是生成專案輸出目錄,上述命令生成專案輸出到了D:\TestTemplate

參考

  • 使用 .NET CORE 建立 專案模板,模板專案,Template - DeepThought - 部落格園
  • Home · dotnet/templating Wiki
  • dotnet new 自定義模板 - .NET Core CLI | Microsoft Docs
  • 建立 dotnet new 專案模板 - .NET Core | Microsoft Docs
  • dotnet/dotnet-template-samples: Samples showing how to create templates using the Template Engine for dotnet new and Visual Studio
  • dotnet new 命令 - .NET Core CLI | Microsoft Docs