一、前言
Nuget是ASP .NET Gallery的一员,是免费、开源的包管理工具,专注于在.Net / .Net Core应用开发过程中第三方组件库的管理,相对于传统单纯的dll引用要方便、科学得多。其中nuget.org是最著名的Nuget公开库,但是企业内部开发的(业务)公共组件不可能都往公开库上传,所以,企业内部需要一个私有的Nuget仓库来支持。虽然微软有提供的Nuget Server,但Nuget Server用起来并不那么顺手,或者说感觉有点low。因此,本文将介绍Nexus搭建的Nuget仓库,希望能给大家多一个选择。
二、下载安装Nexus
具体操作请看这里
三、Nuget仓库说明
如上图所示,其实Nexus默认已经创建好了Nuget的仓库,并且是创建了3个不同类型的仓库:nuget-group,nuget-hosted,nuget.org-proxy
nuget.org-proxy
类型是proxy,表示代理仓库。我们向它请求包(package)的时候,如果本地有,它就从本地提供,如果本地没有,它会从nuget.org下载到本地,然后给我提供这个包。
nuget-hosted
类型是hosted,表示托管仓库。我们一般把自己开发的包上传到该仓库中。
nuget-group
类型是group,表示仓库组,它结合了nuget.org-proxy和nuget-hosted,能对外提供上述两者中的包。
我们可以使用以上默认的几个仓库来保存nuget包,当然也可以自己创建先的仓库来存放,如下图:
接下来我就以将包上传到默认的nuget-hosted为例。
四、上传nuget包
1、下载nuget命令行工具
到 官网 下载最新推荐的nuget.exe,将下载的exe文件复制到C:\Windows\System32目录,这样我们就可以直接使用nuget命令行了。
2、添加Nuget Realms
因为Nexus认证Nuget是通过Realms来认证,因此,要添加Nuget Realms。
3、获取仓库地址以及Nuget API Key
仓库地址在设置->选择仓库->复制地址,如下图:
获取Nuget API Key
输入登录密码即可,如下图:
4、上传Nuget包
这里默认大家已经准备好nuget包了,指令模板:nuget push {dll}.nupkg {apiKey} -source {http://customsource/}
其中:
{dll}.nupkg:nuget包所在的路径,可以是相对路径也可以是绝对路径
{apiKey} 和{http://customsource/}:这两个在上一步已经交大家怎么获取了
完整上传命令参考:nuget push E:\WorkPlace\vs2017\Test\ErikDll\ErikDll\bin\Release\ErikDll.1.0.0.nupkg eb0497e8-5519-3f22-8e9f-f2eae720feb5 -source http://192.168.132.137:8081/repository/nuget-hosted/
完成后我们可以在Nexus上看到我们上传的包:
五、在VS中使用Nuget包
1、 打开Visual Studio的Nuget管理器,进行设置
2、添加私有Nuget仓库地址
3、引用nuget包
解决方案右键->管理解决方案的nuget包