日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

开发现代化的.NetCore控制台程序:(2)创建一个C#项目模板

發(fā)布時間:2023/11/10 C# 50 coder
生活随笔 收集整理的這篇文章主要介紹了 开发现代化的.NetCore控制台程序:(2)创建一个C#项目模板 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

上一篇文章(開發(fā)一個現(xiàn)代化的.NetCore控制臺程序,包含依賴注入/配置/日志等要素)介紹了開發(fā)現(xiàn)代化的.NetCore控制臺程序的細(xì)節(jié),但這還不夠,我又創(chuàng)建了一個腳手架模板,并命名為 FluentConsole.Templates ,可以方便的創(chuàng)建「現(xiàn)代化控制臺應(yīng)用」。

源碼地址: https://github.com/Deali-Axy/fluent-dotnet-console

Nuget包地址: https://www.nuget.org/packages/FluentConsole.Templates/

模板功能

  • ?? 提供快速開發(fā)模板,一鍵生成控制臺應(yīng)用的項目骨架
  • ?? 提供一個「現(xiàn)代化控制臺應(yīng)用項目結(jié)構(gòu)的最佳實踐」的參考方案
  • ?? 依賴注入 - 基于 Microsoft.Extensions.DependencyInjection 的依賴注入支持
  • ?? 日志 - 基于 Microsoft.Extensions.Logging 日志框架,搭配 Serilog 實現(xiàn)日志文件輸出
  • ?? 配置 - 基于 Microsoft.Extensions.Configuration 配置框架,搭配 dotenv.net 等組件擴(kuò)展功能

快速開始

安裝模板

dotnet new install FluentConsole.Templates

使用模板創(chuàng)建項目

dotnet new flu-cli -n MyProject

項目目錄結(jié)構(gòu)

使用模板創(chuàng)建的項目目錄結(jié)構(gòu)是這樣,代碼統(tǒng)一放在 src 目錄下。

MyProject
 ├─ src
 │  ├─ Utilities
 │  │  └─ ConsoleTool.cs
 │  ├─ Services
 │  │  ├─ MainService.cs
 │  │  └─ IService.cs
 │  ├─ MISC
 │  │  └─ SourceGenerationContext.cs
 │  ├─ Entities
 │  │  ├─ OutputResult.cs
 │  │  └─ AppSettings.cs
 │  └─ Program.cs
 ├─ MyProject.csproj
 ├─ Dockerfile
 └─ appsettings.json

這是 src 里每個目錄的介紹:

  • Utilities - 存放通用工具類
  • Services - 業(yè)務(wù)邏輯代碼
  • MISC - 雜項
  • Entities - 實體類,強(qiáng)類型配置、輸出結(jié)果對象

因此,創(chuàng)建項目之后,直接在 Services/MainService.cs 文件里寫業(yè)務(wù)邏輯就好了。

如何創(chuàng)建項目模板?

跟著微軟官方的教程來,非常容易,主要是一些目錄結(jié)構(gòu)方面的細(xì)節(jié)需要處理一下。

以本項目的源碼為例,我們需要一個創(chuàng)建模板的工作目錄,這個目錄在本項目中是 src/Templates

Templates
 ├─ content
 │  └─ FluentConsole.Template
 │     ├─ FluentConsole.Template
 │     │  ├─ src
 │     │  ├─ FluentConsole.Template.csproj
 │     │  ├─ Dockerfile
 │     │  ├─ appsettings.json
 │     │  └─ .env
 │     └─ .template.config
 │        └─ template.json
 └─ FluentConsole.Templates.csproj

然后把所有模板放在 content 目錄中,可以理解為 content 目錄下面每個目錄都是一個模板,當(dāng)然本項目只創(chuàng)建了一個模板,也許以后會添加更多的模板。

每個模板下面最重要的就是 .template.config ,有了這個目錄,dotnet 才會識別到這是個模板

當(dāng)然還得寫個模板配置 template.json

{
  "$schema": "http://json.schemastore.org/template",
  "author": "DealiAxy",
  "classifications": [
    "Common",
    "Console"
  ],
  "identity": "FluentConsole.Template",
  "name": "FluentConsole.Template",
  "description": "提供「現(xiàn)代化的控制臺應(yīng)用的開發(fā)體驗」腳手架,能像 Web 應(yīng)用那樣很優(yōu)雅地整合各種組件,包括依賴注入、配置、日志等功能。",
  "shortName": "flu-cli",
  "sourceName": "FluentConsole.Template",
  "tags": {
    "language": "C#",
    "type": "project"
  }
}

注意其中的 sourceName 字段,這是模板創(chuàng)建時會被替換的內(nèi)容。

比如我們使用了以下命令,從模板創(chuàng)建一個項目,通過 -n 指定了項目名稱為 MyProject

dotnet new flu-cli -n MyProject

那么 dotnet 會自動把 sourceName 設(shè)置的這個名字替換為用戶指定的項目名稱 MyProject

OK,暫時就是這些了,創(chuàng)建模板就這么簡單。

安裝模板

可以直接從源碼安裝模板

依然是這個項目代碼,切換到模板代碼所在的目錄下面,即可安裝模板

cd src/Templates/content/FluentConsole.Template
dotnet new install ./

安裝后可以看到安裝成功的提示

成功: FluentConsole.Templates::1.1.0 已安裝以下模板:
----------------------  -------  ----  --------------
FluentConsole.Template  flu-cli  [C#]  Common/Console

創(chuàng)建 nuget 包

src/Templates 下創(chuàng)建 FluentConsole.Templates.csproj 文件

關(guān)鍵代碼如下

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <PackageId>FluentConsole.Templates</PackageId>
    <PackageVersion>1.1</PackageVersion>
    <Title>FluentDotnetConsole Templates</Title>
    <Authors>DealiAxy</Authors>
    <Company>CodeLab</Company>
    <Description>提供「現(xiàn)代化的控制臺應(yīng)用的開發(fā)體驗」腳手架,能像 Web 應(yīng)用那樣很優(yōu)雅地整合各種組件,包括依賴注入、配置、日志等功能。</Description>
    <PackageTags>dotnet-new;templates;console;cli</PackageTags>
    <PackageProjectUrl>https://github.com/Deali-Axy/fluent-dotnet-console</PackageProjectUrl>

    <PackageType>Template</PackageType>
    <TargetFramework>netstandard2.0</TargetFramework>
    <IncludeContentInPack>true</IncludeContentInPack>
    <IncludeBuildOutput>false</IncludeBuildOutput>
    <ContentTargetFolders>content</ContentTargetFolders>
    <NoWarn>$(NoWarn);NU5128</NoWarn>
    <NoDefaultExcludes>true</NoDefaultExcludes>
    <PackageReadmeFile>README.md</PackageReadmeFile>
  </PropertyGroup>

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

然后執(zhí)行 dotnet pack 即可創(chuàng)建 nuget 包

然后可以上傳到 nuget 平臺。

使用 GitHub 發(fā)布 nuget 包

GitHub 提供了 Packages 管理的功能,可以直接從 GitHub 項目直接創(chuàng)建 nuget 包,并發(fā)布到 nuget 平臺。

PS:我研究一下,下一篇文章再繼續(xù)介紹。

參考資料

  • https://learn.microsoft.com/en-us/dotnet/core/tutorials/cli-templates-create-template-package
  • 源碼地址: https://github.com/Deali-Axy/fluent-dotnet-console
  • Nuget包地址: https://www.nuget.org/packages/FluentConsole.Templates/

總結(jié)

以上是生活随笔為你收集整理的开发现代化的.NetCore控制台程序:(2)创建一个C#项目模板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。