十分鐘搭建自己的私有NuGet伺服器-BaGet
阿新 • • 發佈:2020-08-04
[TOC]
# 前言
> NuGet是用於微軟.NET(包括 .NET Core)開發平臺的軟體包管理器。NuGet能夠令你在專案中新增、移除和更新引用的工作變得更加快捷方便。
通常使用NuGet都是官方的服務,但你有沒有想過搭建自己的NuGet呢?在私有的NuGet上託管一些自己的類庫,公司內部的類庫等。。。搭建私有NuGet的方法有很多,比如NuGet.Server、ProGet、MyGet等等。本文使用的是BaGet,搭建過程也非常簡單,下面進入正題。
# 開始
## 搭建BaGet
> BaGet是一個構建於ASP.NET Core 基礎上的 NuGet V3 伺服器的開源實現。
github地址:https://github.com/loic-sharma/BaGet
下載release包,我下載的是最新預覽版,你也可以選擇其他版本:
https://github.com/loic-sharma/BaGet/releases/download/v0.3.0-preview4/BaGet.zip
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803145835306-1464552057.png)
你可以按需要修改一下埠配置,預設是5000:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803150039208-1901086530.png)
在解壓目錄下開啟命令列,執行:`dotnet BaGet.dll`
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803150339570-1549904699.png)
瀏覽器訪問:`http://localhost:8020/`
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803150445407-1803809948.png)
這樣,NuGet服務就搭建完成了,是不是很簡單?
## 上傳程式包
隨便建立一個類庫專案用於測試:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803151119353-1878230504.png)
右鍵專案,選擇打包:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803151310795-1560461889.png)
打包完成會得到一個nupkg檔案:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803151449410-2061280830.png)
當然,你也可以選擇Release模式:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803163209042-827415192.png)
看一下Upload命令:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803151627897-403112516.png)
在上面打包目錄下開啟命令列執行:`dotnet nuget push -s http://localhost:8020/v3/index.json MyTestLibrary.1.0.0.nupkg`
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803151838316-1387320016.png)
再次檢視Packages:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803152049239-1394894748.png)
## 在vs中使用
在vs2019中開啟:工具-選項-NuGet包管理器-程式包源。新增一個源,輸入名稱,源:http://localhost:8020/v3/index.json
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803153959710-285473415.png)
接下來就可以正常使用了:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803154615906-823903425.png)
## 其他
程式包的作者,說明,版本號等資訊可以在這裡修改:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803155418572-1384622153.png)
依賴項也完全不用擔心:
![](https://img2020.cnblogs.com/blog/610959/202008/610959-20200803160040430-1047110919.png)
# 最後
因為BaGet是基於ASP.NET Core開發,所以天生跨平臺,你可以在windows,mac,linux或者docker中輕鬆部署。另外,BaGet也沒有複雜的環境依賴,資料庫預設Sqlite,很輕量,部署起來非常容易。
當然,本文一開始也提到,搭建私有NuGet的方式有很多,如有需要可以參考微軟官方說明:https://docs.microsoft.com/zh-cn/nuget/hosting-packages/overview