• 使用 .NET CLI 构建项目脚手架


    前言

    在微服务场景中,开发人员分配到不同的小组,系统会拆分为很多个微服务,有一点是,每个项目都需要单元测试,接口文档,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**in**;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 项目,这很棒!

    欢迎扫码关注我们的公众号 【全球技术精选】,专注国外优秀博客的翻译和开源项目分享。

  • 相关阅读:
    【天梯 L2-008 最长对称子串 】 最长回文子串 manacher
    【天梯L2-001 城市间紧急救援】 双关键字最短路+记录路径 堆优化Dijkstra
    记录板

    留言板
    使用 Docker 搭建 Java Web 运行环境(转)
    数据库隔离级别和锁
    线程上下文类加载
    tomcat是怎么找到项目lib目录下的jar包的,求大神解答
    Java中try、finally语句中有return时的执行情况 [转]
  • 原文地址:https://www.cnblogs.com/myshowtime/p/14507675.html
Copyright © 2020-2023  润新知