Nuget是ASP .NET Gallery的一员,是免费、开源的包管理工具,专一于在.Net / .Net Core应用开发过程当中第三方组件库的管理,相对于传统单纯的dll引用要方便、科学得多。其中nuget.org是最著名的Nuget公开库,可是企业内部开发的(业务)公共组件不可能都往公开库上传,因此,企业内部须要一个私有的Nuget仓库来支持。虽然微软有提供的Nuget Server,但Nuget Server用起来并不那么顺手,或者说感受有点low。所以,本文将介绍Nexus搭建的Nuget仓库,但愿能给你们多一个选择。linux
安装环境docker
Centos 7+, dockervim
若是有数据盘须要挂载,能够先设置分区,没有可跳过此步骤。api
mkdir -p /opt/nexus -- 建立存放nexus数据的目录工具
fdisk -l -- 查看硬盘信息,肯定须要挂载的硬盘信息ui
mkfs.ext4 /dev/xvde -- 格式化硬盘3d
mount /dev/xvde /opt/nexus 挂载磁盘代理
blkid --查看硬盘信息server
vim /etc/fstab --将新分区的blkid写入/etc/fstab,内容参考:blog
UUID={uuid} /opt/nexus ext4 defaults 0 0
保存退出,并重启机器。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
重启机器。
若是已安装的docker,可跳过此步骤。
yum update
yum install -y docker
systemctl enable docker
systemctl start docker
docker pull sonatype/nexus3:3.12.0
镜像详细说明:https://hub.docker.com/r/sonatype/nexus3/
mkdir /opt/nexus && chown -R 200 /opt/nexus
docker run -d -p 8081:8081 --name nexus -v /opt/nexus:/nexus-data sonatype/nexus3:3.12.0
稍等片刻,多是几分钟,经过http://serverip:8081就能访问Nexus了。
Nexus的默认管理员账号:admin,密码:admin123。点击界面右上角能够登陆。
登陆完后,能够看到一个设置按钮:
点击Repositories,查看内置的默认仓库:
其实Nexus默认已经建立好了Nuget的仓库,而且是建立了3个不一样类型的仓库:nuget-group,nuget-hosted,nuget.org-proxy。
a. nuget.org-proxy
类型是proxy,表示代理仓库。咱们向它请求包(package)的时候,若是本地有,它就从本地提供,若是本地没有,它会从nuget.org下载到本地,而后给我提供这个包。
b. nuget-hosted
类型是hosted,表示托管仓库。咱们通常把本身开发的包上传到该仓库中。
c. nuget-group
类型是group,表示仓库组,它结合了nuget.org-proxy和nuget-hosted,能对外提供上述二者中的包。
简而言之,nuget-hosted负责包上传,nuget.org-proxy负责代理包,nuget-group负责提供包。
到https://www.nuget.org/downloads下载最新推荐的nuget.exe。
由于Nexus认证Nuget是经过Realms来认证,所以,要添加Nuget Realms。
编写DLL:
设置DLL信息(可选)
打包dll
方法一:使用控制台
dotnet pack -c Release
方法二:使用Visual Studio
指令模板:nuget push {dll}.nupkg {apiKey} -source {http://customsource/}
例如,我这里是:D:\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上也能看到上传的package:
其中,apiKey的获取方法以下: