使用 .NET CLI 構建專案腳手架

SpringLeee發表於2021-03-09

前言

在微服務場景中,開發人員分配到不同的小組,系統會拆分為很多個微服務,有一點是,每個專案都需要單元測試,介面文件,WebAPI介面等,建立新專案這些都是重複的工作,而且還要保證各個專案結構的大體一致,這時就需要一個適用於企業內部的框架模板,類似於前端的腳手架,可以做到開箱即用,注重業務功能開發,提升工作效率。

簡介

NET 命令列介面 (CLI) 工具是用於開發、生成、執行和釋出 .NET 應用程式的跨平臺工具鏈。

本次主要介紹的是 dotnet new 命令,可以通過這個命令建立我們的自定義模板,我們安裝完.NET SDK後,本身自帶了一些專案模板,可以通過 dotnet new --list 檢視已經安裝的模板。

接下來,我會介紹如何構建自定義的專案模板。

準備工作

首先,我們需要準備一個簡單的專案模板,我們希望以後可以通過腳手架,自動為我們生成這些專案和檔案,這裡面可能包含了單元測試專案,WebAPI專案等。

你也可以在這裡找到專案原始碼,https://github.com/SpringLeee/Dy.Template

在本地建立 Dy.Template 資料夾,並在資料夾內建立 templates 資料夾(後邊所有的模板檔案都在這裡), 這裡我建立了一個解決方案,裡面包含了3個專案,WebAPI,Test 和 Task,專案結構如下:

構建模板

在 templates 資料夾內,建立一個名為 ".template.config" 的資料夾(可以通過命令 mkdir .template.config 建立, 然後進入該資料夾,再建立一個名為 "template.json" 的新檔案, 資料夾結構應如下所示:

然後修改配置檔案如下:

{
  "$schema": "http://json.schemastore.org/template",
  "author": "SpringLee",
  "classifications": [ "Template" ],
  "name": "Dy.Template",
  "identity": "Dy.Template", 
  "shortName": "dy-template",
  "tags": {
    "language": "C#" 
  },
  "sourceName": "Template" 
}

上面是一些基本的描述資訊,需要注意的是 "sourceName" 屬性,它相當於一個變數,我們通過這個屬性,可以建立 Dy.Order.WebAPI, Dy.User.WebAPI 這樣的專案,後邊我會進行詳細介紹。

打包模板

基礎工作已經準備完成,我們還需要把專案打包,釋出到Nuget.org 或者是公司的內部 Nuget Server,這樣其他人才可以下載和安裝這個模板。

你可能很熟悉在.NET 中對單個專案進行打包,比如類庫,可以在VS中直接對專案使用右鍵打包,也可以使用dotnet pack命令,不一樣的是,我們需要打包的是整個專案結構,而不是單個專案。

我們在 Dy.Template 資料夾下,建立 template-pack.csproj 檔案

修改內容如下:

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

  <PropertyGroup>
    <PackageType>Template</PackageType>
    <PackageVersion>1.0.0</PackageVersion>
    <PackageId>Dy.Template</PackageId>
    <Title>Dy.Template</Title>
    <Authors>SpringLee</Authors>
    <Description>Dy.Template</Description>
    <PackageTags>dotnet-new;templates;Dy.Template</PackageTags>

    <TargetFramework>netstandard2.0</TargetFramework>

    <IncludeContentInPack>true</IncludeContentInPack>
    <IncludeBuildOutput>false</IncludeBuildOutput>
    <ContentTargetFolders>content</ContentTargetFolders>
    <NoWarn>$(NoWarn);NU5128</NoWarn>
  </PropertyGroup>

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

</Project>

我們指定了程式包的基礎資訊,版本ID, 描述資訊,包含了 templates 資料夾下的所有檔案,然後排除了 bin\ obj\ 資料夾的dll檔案。

然後,執行 dotnet pack 命令進行打包, 你可以在 /bin/nuget/ 資料夾找到 生成的 nupkg 檔案

在win10的應用商店(Microsoft Store)安裝 Nuget Package Explore

我們把生成的 nupkg 檔案 丟到 Nuget Package Explore 裡檢視,結構如下,包含了我們的 .config 配置檔案,各個專案,解決方案。

最後,你可以把程式包推送到 nuget 伺服器。

安裝並使用

在終端中執行 dotnet new --install Dy.Template 命令安裝,安裝成功後,應該可以看到下邊的輸出,裡邊包含了我們的自定義模板

執行 dotnet new Dy.Template --name=Order,--name 指定了變數值,它會自動幫我們生成 Order 專案,這很棒!

歡迎掃碼關注我們的公眾號 【全球技術精選】,專注國外優秀部落格的翻譯和開源專案分享。

使用 .NET CLI 構建專案腳手架

相關文章