1 前言
1.1 BaGet 介紹
BaGet 是一個輕量級的,開源的,跨平臺的 Nuget 和 symbol 伺服器。
1.2 環境介紹
作業系統:CentOS 7
使用 Docker 安裝
2 安裝步驟
2.1 配置檔案
登入 Linux 伺服器以後,在 /root 目錄下,建立一個 baget.env 檔案:
touch baget.env
使用 vim 進入編輯:
vim baget.env
輸入下面內容,將 ApiKey 設定為自己的密碼:
# The following config is the API Key used to publish packages.
# You should change this to a secret value to secure your server.
ApiKey=NUGET-SERVER-API-KEY
Storage__Type=FileSystem
Storage__Path=/var/baget/packages
Database__Type=Sqlite
Database__ConnectionString=Data Source=/var/baget/baget.db
Search__Type=Database
更多的配置,可以檢視:BaGet's configuration
2.2 拉取 Docker 映象
docker pull loicsharma/baget
2.3 啟動 Baget
docker run --rm --name nuget-server -p 5555:80 --env-file baget.env -v "$(pwd)/baget-data:/var/baget" loicsharma/baget:latest
-p 5555:80 是把 docker 內的 80 埠對映到伺服器的 5555 埠。
啟動如果沒有報錯,則訪問 http://伺服器ip:5555,如 http://192.168.10.20:5555 即可成功訪問
3 上傳 Nuget 包
3.1 新建一個類庫
使用 vs2022 新建一個類庫,命名 MessageLib
namespace MessageLib;
public class MessageLib
{
public string Version { get; } = "1.0";
public string Get()
{
return "test message!!!";
}
}
右鍵專案屬性,找到【包】一項,勾選 “在構建時生成 NuGet” 包。
並根據需要,指定包的一些屬性,如包ID、版本等資訊。
3.2 生成解決方案
vs2022 的輸出視窗輸出如下資訊:
已還原 D:\_code\testnetcore\Nuget\MessageLib\MessageLib\MessageLib.csproj (用時 3 ms)。
1>------ 已啟動全部重新生成: 專案: MessageLib, 配置: Debug Any CPU ------
1>MessageLib -> D:\_code\testnetcore\Nuget\MessageLib\MessageLib\bin\Debug\net6.0\MessageLib.dll
1>已成功建立包“D:\_code\testnetcore\Nuget\MessageLib\MessageLib\bin\Debug\MessageLib.1.0.0.nupkg”。
========== 全部重新生成: 成功 1 個,失敗 0 個,跳過 0 個 ==========
3.3 上傳 Nuget 包
Ctrl
+ ~
開啟開發者 PowerShell,切換目錄到上一步生成的包的路徑:
cd D:\_code\testnetcore\Nuget\MessageLib\MessageLib\bin\Debug\
然後輸入 publish 命令:
注意將命令中的地址改成自己的伺服器地址,並且將 NUGET-SERVER-API-KEY 改成 baget.env 配置檔案中設定的 ApiKey,包名 MessageLib.1.0.0.nupkg 對應改成自己的包名
dotnet nuget push -s http://localhost:5555/v3/index.json -k NUGET-SERVER-API-KEY MessageLib.1.0.0.nupkg
在網頁中,可以看到上傳的包:
4 使用自建伺服器的 Nuget 包
4.1 修改 VS 配置
在:工具 -> 選項
新增一個新的包源,輸入名稱和源,點更新,確定
4.2 引入 Nuget 包
在 Nuget 包介面中,選擇程式包源為自己剛新增的自建伺服器,選擇對應的包安裝即可。
4.3 命令列引入 Nuget 包
待補充……