基于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 打包即可

相关推荐
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工5 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智5 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_5 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉5 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦5 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw