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

相关推荐
代码游侠1 天前
学习笔记——IPC(进程间通信)
linux·运维·网络·笔记·学习·算法
txzz88881 天前
CentOS-Stream-10 YUM配置文件
linux·运维·centos·yum配置文件
星融元asterfusion1 天前
办公网+自建云:基于TIP OpenWiFi 控制器的混合组网一站式融合管理方案
运维·混合组网·openwifi
Henry Zhu1231 天前
VPP中ACL源码详解第二篇:ACL数据平面处理
运维·服务器·网络·计算机网络
qq_339191141 天前
ubuntu 配置ulimit -n , ubuntu配置文件描述符数量, ubuntu优化,ubuntu系统调优
linux·运维·ubuntu
WG_171 天前
Linux:基础IO(18+19)+文件描述符
linux·运维·服务器
fiveym1 天前
解析Debian 10安装Intel Xeon Silver 4510卡住问题及Debian 11/12支持改进
运维·debian
开利网络1 天前
从“流量”到“留量”:长效用户运营的底层逻辑
大数据·运维·人工智能·自动化·云计算
嘻哈baby1 天前
管理100台服务器是什么体验?Python一行代码搞定
运维