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 包
待补充……