本文首发: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打开,整个解决方案生成下。
完美结束。