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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用 .NET CORE 创建 项目模板,模板项目,Template

發布時間:2023/12/4 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 .NET CORE 创建 项目模板,模板项目,Template 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景:日常工作中,你可能會碰到需要新建一個全新的解決方案的情況(如公司新起了一個新項目,需要有全新配套的后臺程序),如果公司內部基礎框架較多、解決方案需要DDD模式等,那么從新起項目到各種依賴引用到能實際可用,一大堆的配置都需要重新設定、測試,耗時耗力,根據項目的大小,往往可能需要 1-2 小時甚至更久。

在 .net core 之前,雖然有相關的解決方法可以實現“項目模板”這個需求,但在具體操作時很不方便,從 .net core 1.0 開始,提供了“模板引擎”,增加了 dotnet new --install(-i) 命令和選項,通過該命令,可以讓你方便的創建屬于你自己的項目模板。

通過本文你可以了解和掌握:

  • 掌握如何將一個現有解決方案中的項目作為項目模板。

  • 掌握如何在本地創建項目模板并安裝和使用。

  • 掌握如何將本地模板打包成 nuget 包,并通過包 id 進行安裝使用該模板。

  • 了解、掌握簡單的 dotnet 和 nuget 命令及其配置。(windows 和 mac 會做差異說明)

  • 本次項目結構如下(DDD):

    你可以在我的 github 庫:

    • 用于發布的項目一共兩個,Template.Console 和 Template.WebApi

      • 其中 Console 項目就是簡單的引用了下其他項目進行輸出。

      • WebApi 項目簡單配置了下依賴注入,你可以將此項目作為 api 模板項目來說

    Console 項目概要:

    WebApi 項目概要:

  • 本次示例以 Console 為例,將控制臺項目涉及到的項目拷貝一份到如下文件夾中:

  • 手動創建一個名為“.template.config”的文件夾,并在該文件夾內創建文件:template.json

    {"$schema": "http://json.schemastore.org/template","author": "Artech","classifications": [ "Console" ],"name": "Custom Console","identity": "Custom Console", //模板唯一標識"groupIdentity": "Custom Console","shortName": "CustomConsole", //【修改】短名稱,使用 dotnet new <shortName> 安裝模板時的名稱"tags": {"language": "C#","type": "project" },"sourceName": "Template", //【修改】在使用 -n 選項時,會替換模板中項目的名字"preferNameDirectory": true }
    • shortName:短名稱,用于在使用“dotnet new -l”命令時顯示,安裝時也可直接根據該短名稱進行安裝。

    • sourceName:當我們在使用"dotnet new" 命令進行安裝時,如果指定了 -n 或者 -o 選項,那么選項后面的名字會自動替換 sourceName 中指定的名字,因為我們的項目命名規則是 "Template.XXXX",所以這里設定為“Template”,如果你的項目命名規則是“公司.項目.XXX”,那么這里請設定為“公司.項目”。

    • 這里主要說明下 shortName 和 sourceName 這 2 個屬性。

    安裝該模板到本地模板庫

    dotnet new -l

    dotnet new -i .

    安裝該短名稱為 CustomConsole 的模板

    假定安裝路徑為 D:\TestTemplate

    dotnet new CustomConsole -n Company.Group -o .

    文件夾內容如下:

    測試:

    更多關于 template.json 的說明請參考:http://json.schemastore.org/template

    • 在 template.json 中,你還可以指定 symbols 等,來實現更多的自定義功能,如聯動預編譯指令等等。

    • 使用模板新建的項目文件夾自動為“Company.Group.XXXX”

    本次示例以 Console +WebApi 為例,在 Templates\Nuget 文件夾中,建立 Content 文件夾用于存放 nuget 包內容,具體如下:

    • ConsoleTemplate 中的 .template.config\template.json 內容同上方 Console 示例。

    • WebApiTemplate 中的 .template.config\template.json 內容如下:

      {"$schema": "http://json.schemastore.org/template","author": "Artech","classifications": [ "WebApi" ],"name": "Custom WebApi","identity": "Custom WebApi","groupIdentity": "Custom WebApi","shortName": "CustomWebApi","tags": {"language": "C#","type": "project"},"sourceName": "Template","preferNameDirectory": true }
  • 在 content 目錄內創建一個 nuspec 文件:Custom.Template.NetCore.nuspec,內容如下:

    <?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"><metadata><id>Custom.Template.NetCore</id><version>1.0.1</version><description>Custom Template, including WebApi, Console</description><authors>Artech</authors><packageTypes><packageType name="Template" /></packageTypes></metadata> </package>
    • 需要注意,packageType 為 Template,metadata.id 必須保證唯一,其他按需設置即可。

    • 必須是在 content 文件夾內。nuget 在打包的時候,是根據 content 文件夾來進行的。

    使用 nuget pack 命令打包

    nuget pack Custom.Template.NetCore.nuspec -OutputDirectory .

    • 打包后的內容為:

  • 發布該 nuget 包到 nuget server

    這里用的是自建 nuget server,你可以按自身情況打包上傳。

    nuget push Custom.Template.NetCore.1.0.1.nupkg -Source "你的nuget 服務 url" -ApiKey "你的nuget api key"
    • 你可以直接使用 Nuget Package Explorer 進行發布包

    • 也可以使用 nuget push 來發布,如下:

    通過 nuget 安裝模板到本地

    • 安裝前本地已經安裝的模板如下:

    • 安裝

      dotnet new -i Custom.Template.NetCore::*

  • 通過模板安裝 CustomWebApi

    安裝路徑為:D:\TestWebApiTemplate

    dotnet new CustomWebApi -n Company.Group -o .
  • 創建一個解決方案,并將所有的項目添加到解決方案 Company.Group.sln 中

    dotnet new sln -n Company.Groupdotnet sln Company.Group.sln add Company.Group.Application\Company.Group.Application.csproj dotnet sln Company.Group.sln add Company.Group.Domain\Company.Group.Domain.csproj dotnet sln Company.Group.sln add Company.Group.DomainService\Company.Group.DomainService.csproj dotnet sln Company.Group.sln add Company.Group.IApplication\Company.Group.IApplication.csproj dotnet sln Company.Group.sln add Company.Group.IDomainService\Company.Group.IDomainService.csproj dotnet sln Company.Group.sln add Company.Group.Infrastructure.CrossCutting\Company.Group.Infrastructure.CrossCutting.csproj dotnet sln Company.Group.sln add Company.Group.Repository\Company.Group.Repository.csproj dotnet sln Company.Group.sln add Company.Group.WebApi\Company.Group.WebApi.csproj

    如果你用的是 mac / linux ,則可以直接用 globbing pattern 來添加,如下:

  • https://devblogs.microsoft.com/dotnet/how-to-create-your-own-templates-for-dotnet-new/

    https://github.com/dotnet/dotnet-template-samples

    https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new?tabs=netcore22

    https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools

    總結

    以上是生活随笔為你收集整理的使用 .NET CORE 创建 项目模板,模板项目,Template的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。