.netcore 3.1高性能微服務架構:打造自己的.NET Core項目模板

一、前提:

1、搭建好企業內部的nuget服務器,非常簡單,netframework 4.6.1項目。

2、下載nuget.exe   https://www.nuget.org/downloads,下載後一般會放在目錄  C:\Program Files\nuget

3、下載:NuGet Package Explorer工具。 這2個工具下載地址:https://download.csdn.net/download/puzi0315/12238563

4、本地電腦,環境變量--Path添加nuget.exe所在目錄(C:\Program Files\nuget)。

5、已經創建好的項目模板;

 

二、打包項目文件

1、創建目錄,Nuget/Content, 把整個項目解決方案複製一份到該目錄下。

2、把所有解決方案的所有項目下的bin和obj刪除;

3、創建目錄 .template.config,記得前面有點號;

4、.template.config目錄下創建template.json文件,該文件的內容如下:

複製代碼

{
  "$schema": "http://json.schemastore.org/template",
  "author": "zyiznet",
  "classifications": [ "WebApi" ],
  "name": "Zyiz WebApi31",
  "identity": "Zyiz WebApi31",
  "groupIdentity": "Zyiz WebApi31",
  "shortName": "ZyizWebApi31",
  "tags": {
    "language": "C#",
    "type": "project"
  },
  "sourceName": "Template",
  "preferNameDirectory": true
}

複製代碼

author爲作者名稱,classifications表明該項目適用的類型,可以設置WebApi,web等;name是nuget的名稱,identity爲唯一標識,shortName爲短名稱;下載模板的時候會用到。

sourceName【修改】在使用 -n 選項時,會替換模板中項目的名字。

 

5、在content目錄的同級創建一個.nuspec文件,比如:Zyiz.WebApi.Template.NetCore31.nuspec,該文件裏的內容如下:

複製代碼

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>Zyiz.WebApi.Template.NetCore31</id>
    <version>1.0.9</version>
    <description>
      Zyiz.Net.WebApi31 Template, including WebApi      
    </description>
    <authors>muxue</authors>
    <packageTypes>
      <packageType name="Template" />
    </packageTypes>
  </metadata>
</package>

複製代碼

id是在nuget服務器上的唯一標識,version是版本號,以後更新升級啥的,就靠這個版本號來維護了。

如上,目錄層次好像有點亂,我截個圖:

6、.nuspec打包成.nupkg

cmd:進入該 .nuspec所在目錄,在cmd裏執行如下命令:

nuget   pack   Zyiz.WebApi.Template.NetCore31.nuspec   -NoDefaultExcludes  -OutputDirectory   .

自動在當前目錄下生成的.nupkg。

若執行的時候,報警告:

警告: NU5100: The assembly 'Content\WebApiTemplate\MuXue.Zyiz.Template.Common\bin\Debug\netcoreapp3.1\MuXue.Zyiz.Template.Common.dll' is not inside the 'lib' folder and hence it won't be added as a reference when the package is installed into a project. Move it into the 'lib' folder if it needs to be referenced.

說明項目裏的bin和obj沒有刪除,需要先刪除bin和obj,再刪除剛剛生成的.nupkg包。重新執行打包命令,如下,說明打包成功了。

 

7、你可以使用NuGet Package Explorer工具查看你的剛剛打好的包。

 三、打的包確認無誤後,將包上傳到nuget服務器:

你可以使用 NuGet Package Explorer工具上傳,也可以使用命令上傳。

我們先用命令上傳,(把 NuGet Package Explorer工具裏剛剛打開的包關掉)。

dotnet nuget push *.nupkg -k www_zyiz_net -s http://127.0.0.1:8866/nuget

其中 www_zyiz_net 爲 nuget服務器的web.config裏設置的appkey值。

http://127.0.0.1:8866/nuget  是 nuget服務器地址。

該命令的詳細參數如下:

dotnet nuget push [<ROOT>] [-d|--disable-buffering] [--force-english-output] [--interactive] [-k|--api-key] [-n|--no-symbols]
    [--no-service-endpoint] [-s|--source] [--skip-duplicate] [-sk|--symbol-api-key] [-ss|--symbol-source] [-t|--timeout]
dotnet nuget push [-h|--help]

說明已經成功了。可以在nuget服務器上查看。

http://127.0.0.1:8866/nuget/Packages

 

四、使用模板

1、本地安裝模板: cmd裏敲命令

dotnet new -i Zyiz.WebApi.Template.NetCore31::*

這裏的Zyiz.WebApi.Template.NetCore31即爲我們上面的.nuspec文件裏 metadata 的id值。

2、查看是否安裝成功:

上一步若安裝成功後,界面會返回一個已經安裝好的項目模板:如圖,說明已經安裝好了。

(這裏需要將內部的nuget服務器地址配置到nuget包源裏,在vs2019裏設置:nuget包管理器-程序包源,添加地址)

 

3、將入我們現在要創建一個學生接口項目,先創建一個文件夾StudentApi目錄,cmd進入該目錄。

dotnet   new   ZyizWebApi31   -n   StudentApi   -o   .

這裏的ZyizWebApi31是使用短名稱。

StudentApi爲新創建的項目名稱。

執行完畢後,查看該目錄,已經成功創建好項目了。並且名稱都是我們自己定義的新的名稱。 上面說的項目模板裏Template全部替換成StudentApi了。

 

4、用vs2019打開,整個解決方案生成下。

 

完美結束。

本文參考文章:

https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/cli-templates-create-project-template

http://www.zyiz.net/tech/detail-115973.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章