一、NuGet是什么?
NuGet是Microsoft开发平台的程序集包管理器,它由客户端工具和服务端站点组成,客户端工具提供给用户管理和安装/卸载软件程序包,以及打包和发布程序包到NuGet服务端站点等功能,服务端站点存储已经发行的软件包,并为NuGet客户端软件包库提供服务,使软件包共享给其他的开发者。
二、NuGet服务端站点的搭建
1、打开Visual Studio创建空的Web站点,如图:
2、打开管理NuGet程序包,选择程序包源为:nuget.org 然后在搜索框中输入:NuGet.Server,如图:
当然你也可以在程序包控制台中输入下面的命令直接安装
install-package NuGet.Server
3、安装完成之后,打开web.confg 修改apikey 如图:
如果requireApiKey的值设置为false,那么apikey就可以设置为空,我这里随便搞了一个,然后服务端的站点就完成了,你可以将这个站点部署到服务器的IIS里面,看一下最后运行的结果:
三、NuGet客户工具打包和发布程序包到刚刚搭建的NuGet服务器上与其他开发者共享程序包
1、首先我们得安装NuGet客户端工具,我的Visual Studio 2015是自带的(我选择了完全安装模式),如果你的没有那么可以到nuget上下载安装包,安装包的下载地址:https://www.nuget.org/
2、将程序集打包
在打包之前先要创建一个打包清单文件.nuspec, 你可以从头到尾手动创建打包清单,或者输入下面的命令进行创建:
nuget spec
其更多选项可以参考其官方文档:https://docs.nuget.org/ndocs/tools/nuget.exe-cli-reference#spec
这个命令你可以在visual studio的程序包管理控制台里面执行,也可以在cmd里面执行,但都需要路由到需要打包的项目目录下运行,如图:
我先把它改名为dogstar.nuspec,然后你可以使用任何文本编辑器来打开这个文件,如图:
在这里我简单介绍一下下面的的几个元素,其他更多请参照官方文档(https://docs.nuget.org/ndocs/schema/nuspec)
id:程序包的唯一标识符
version:发行版本号
description:程序包的功能详细说明
releaseNotes:本次发行的版本有那些主要变更,例如:修复bug,支持全文检索
dependencies:此程序包依赖于哪些Nuget上的程序包
files:包含程序集文件和内容文件
程序集文件的目标根目录必须是lib,如:target="lib" 或者 target="lib et40",lib目录下的文件将会安装到目标项目的bin目录下
内容文件的目标根目录必须是content,如:target="contentscripts" 或者 target="content hemecss",content目录下的所有文件和文件夹都会被安装到目标项目下的根目录下
这里需要提醒一下的就是路径不可以用“/”分隔符,必须使用“"分隔符
exclude属性指定不包括的文件;
关于files节点的更多内容请参照官方文档:https://docs.nuget.org/ndocs/schema/nuspec#including-assembly-files
文件清单创建完毕之后,执行下面的命令进行打包:
nuget pack dogstar.nuspec
执行命令之后会生成一个 dogstar.1.0.0.nupkg 文件,这里你会看到一堆的警告,其实打包还有可以用visual studio的项目文件(*.csproj)进行打包,具体操作请参照官方文档:https://docs.nuget.org/ndocs/create-packages/creating-a-package#creating-the-package
到此为止打包的步骤就已经完成了,下面介绍发布到nuget服务器上的操作
3、将nuget包发布到服务器上
发布的操作相当简单,其实在前面的第二部分的Nuget服务器站点搭建完成之后运行站点后的那个效果图里面就已经将方法输出来了,请看下面的命令:
nuget push dogstar.1.0.0.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -Source http://localhost:27928/api/v2/package
四、验证结果
NuGet服务端站点和客户端打包发布都已经介绍玩了,现在回到nuget管理程序包里面验证一下结果,在验证结果之前,首先添加程序包源的设置,如图:
然后在程序包源的下拉中选择client test 将会看到我们刚刚发布的dogstar程序包,如图:
ok,马上点击安装看一下
打包的文件已经正确安装到测试项目里面,验证结果成功!