本文首發:http://www.zyiz.net/tech/detail-115973.htmlhtml
1、前提:
一、搭建好企業內部的nuget服務器,很是簡單,netframework 4.6.1項目。web
二、下載nuget.exe https://www.nuget.org/downloads,下載後通常會放在目錄 C:\Program Files\nugetjson
三、下載:NuGet Package Explorer工具。 這2個工具下載地址:https://download.csdn.net/download/puzi0315/12238563api
四、本地電腦,環境變量--Path添加nuget.exe所在目錄(C:\Program Files\nuget)。服務器
五、已經建立好的項目模板;app
2、打包項目文件
一、建立目錄,Nuget/Content, 把整個項目解決方案複製一份到該目錄下。
ide
二、把全部解決方案的全部項目下的bin和obj刪除;工具
三、建立目錄 .template.config,記得前面有點號;spa
四、.template.config目錄下建立template.json文件,該文件的內容以下:.net
{
"$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 選項時,會替換模板中項目的名字。
五、在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是版本號,之後更新升級啥的,就靠這個版本號來維護了。
如上,目錄層次好像有點亂,我截個圖:
六、.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包。從新執行打包命令,以下,說明打包成功了。
七、你能夠使用NuGet Package Explorer工具查看你的剛剛打好的包。
3、打的包確認無誤後,將包上傳到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
4、使用模板
一、本地安裝模板: cmd裏敲命令
dotnet new -i Zyiz.WebApi.Template.NetCore31::*
這裏的Zyiz.WebApi.Template.NetCore31即爲咱們上面的.nuspec文件裏 metadata 的id值。
二、查看是否安裝成功:
上一步若安裝成功後,界面會返回一個已經安裝好的項目模板:如圖,說明已經安裝好了。
(這裏須要將內部的nuget服務器地址配置到nuget包源裏,在vs2019裏設置:nuget包管理器-程序包源,添加地址)
三、將入咱們如今要建立一個學生接口項目,先建立一個文件夾StudentApi目錄,cmd進入該目錄。
dotnet new ZyizWebApi31 -n StudentApi -o .
這裏的ZyizWebApi31是使用短名稱。
StudentApi爲新建立的項目名稱。
執行完畢後,查看該目錄,已經成功建立好項目了。而且名稱都是咱們本身定義的新的名稱。 上面說的項目模板裏Template所有替換成StudentApi了。
四、用vs2019打開,整個解決方案生成下。
完美結束。