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

相关推荐
xflySnail1 小时前
nas服务域名高速访问-DNS+ESA
运维·服务器·esa·无端口访问
苏宸啊8 小时前
Linux指令篇(一)
linux·运维·服务器
睡不醒的猪儿9 小时前
nginx常见的优化配置
运维·nginx
我要升天!9 小时前
Linux中《网络基础》
linux·运维·网络
国强_dev9 小时前
在数据库开发和运维中的“错误信息误导(Red Herring)”
运维·adb·数据库开发
安科瑞刘鸿鹏179 小时前
工业自动化系统中抗晃电保护的协同控制研究
运维·网络·嵌入式硬件·物联网
ZStack开发者社区10 小时前
ZStack Cloud 5.5.0正式发布
运维·服务器·网络
草莓熊Lotso10 小时前
脉脉独家【AI创作者xAMA】|当豆包手机遭遇“全网封杀”:AI学会操作手机,我们的饭碗还保得住吗?
运维·开发语言·人工智能·智能手机·脉脉
三不原则10 小时前
银行 AIOps 实践拆解:金融级故障自愈体系如何搭建
大数据·运维
晴天¥11 小时前
VMware+Oracle linux LVM/非LVM磁盘扩容
linux·运维·服务器