基于BaGet 构建NuGet私有库并实现类库打包到NuGet私有库

1. BaGet 介绍

BaGet 是一个开源的 NuGet 服务器,旨在提供轻量级、高性能且易于部署的 NuGet 包管理解决方案。它支持多种存储后端(如 Azure Blob StorageAmazon S3Local File Storage System/本地文件系统 等),并且具有高度可定制性和扩展性。

BaGet 源码托管地址为:https://github.com/loic-sharma/BaGet

1.2 主要特点

BaGet 是基于 .NET Core 开发的 NuGet 包服务器应用组件,因此需要运行环境安装 .NET Core SDKBaGet 具有以下特性:

  • 轻量级:BaGet 是一个轻量级的 NuGet 服务器,适合小型到中型项目。
  • 高性能:利用 ASP.NET CoreSQLite/PostgreSQL 提供高性能的服务。
  • 配置持久化:支持多种数据库类型,支持离线缓存。
  • 易于部署:支持 Docker 容器化部署,方便快速搭建。
  • 高度可定制:支持多种存储后端(包括云存储)和配置选项。
  • 安全:支持 HTTPSAPI 密钥认证。

1.3 使用说明

1.3.1 安装与部署

1.3.1.1 Docker 部署
复制代码
# 拉取镜像
docker pull jkempf/baget
# 运行容器
docker run -p 5000:5000 --name baget -d jkempf/baget

这将启动一个默认配置的 BaGet 实例,并映射端口 5000 到宿主机。

1.3.1.2 手动部署
复制代码
# 下载源码
git clone https://github.com/jkempf/baget.git
# 进入代码目录
cd baget
# 安装依赖
dotnet restore
# 构建项目
dotnet publish -c Release -o ./publish
# 运行应用
dotnet ./publish/BaGet.dll
1.3.1.3 配置
  • 使用环境变量配置

    设置环境变量

    export BAGET__STORAGE__TYPE=FileSystem
    export BAGET__STORAGE__PATH=/path/to/packages
    export BAGET__DATABASE__CONNECTION_STRING="Data Source=/path/to/baget.db"
    export BAGET__API_KEY=your-api-key

    运行应用

    dotnet ./publish/BaGet.dll

  • 使用 JSON 配置文件

    创建 json 配置文件

    {

    复制代码
    "Storage": {
     
      "Type": "FileSystem",
      "Path": "/path/to/packages"
    },
    "Database": {
     
      "ConnectionString": "Data Source=/path/to/database.db"
    },
    "ApiKey": "your-api-key" // 此处配置 API 安全密钥

    }

    指定配置文件路径

    dotnet ./publish/BaGet.dll --configuration /path/to/config.json

1.3.1.4 部署成功验证

IIS管理器 → 右键「网站」→ 添加网站: 名称:NuGetServer 物理路径:指向发布文件夹(如D:\DEV\Web\NuGetServer) 端口:建议使用非80端口(如9000)避免冲突 应用程序池 → 设置.NET版本为v4.0,托管模式为「集成」

访问对应的网址,出现如下页面说明部署成功了

1.3.1.5 修改nuget包配置

上传NuGet包 上传之前,需要在 nuget 的配置文件加上源C:\Users\{用户名}\AppData\Roaming\NuGet\NuGet.Config

复制代码
<configuration>
<packagesources>
<add key="BaGet
value="http://192.168.119.180:5555/v3/index.json" allowInsecureConnections="true" />
</packagesources>
</configuration>

1.4 配置Nuget仓库并上传package

下载NuGet

将下载的exe文件放到指定的文件夹中,然后配置环境变量(比如我放在D:\application\Nuget路径下,那么我就将D:\application\Nuget添加到系统环境变量中)

测试是否成功,打开cmd,输入nuget,回车如下图则成功。


nuget.exe spec 生成 NuSpec 文件或者手动创建

执行 nuget.exe pack 打包即可

相关推荐
比昨天多敲两行21 分钟前
Linux基础开发工具(下)
linux·运维·服务器
feng14561 小时前
OpenSREClaw - 故障复盘和变更评审双 Agent 案例
运维·人工智能
linux修理工2 小时前
chrome官方下载地址
运维·服务器
无忧智库2 小时前
IT运维正在经历一场真正的范式革命:从告警风暴到AIOps自主自愈的完整工程解构(WORD)
运维
cn_lyg2 小时前
Linux的入门级常用操作命令
linux·运维·服务器
就叫飞六吧3 小时前
TOML vs YAML:为什么 Cargo 选择 TOML?
linux·运维·服务器
MiNG MENS3 小时前
nginx 代理 redis
运维·redis·nginx
IMPYLH3 小时前
Linux 的 test 命令
linux·运维·服务器·chrome·bash
HackTwoHub4 小时前
Linux 内核史诗级本地提权 全网深度复现、原理完整分析( CVE-2026-31431)
linux·运维·安全·web安全·网络安全·代码审计·安全架构
嵌入式×边缘AI:打怪升级日志5 小时前
嵌入式Linux开发核心自测题(全系列精华浓缩)
java·linux·运维