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的獲取方法以下: