本文首发于码友网 –《1 分钟极速搭建基于 BaGet 的轻量级公有 Nuget 程序包服务器》
概述
大家好,我是专一.NET 开发的码友网创建者Rector。
在上一篇《NuGet 是什么?为什么.NET 我的项目中会有 NuGet?如何应用 NuGet 程序包?》文章中,咱们理解了:
- NuGet 是什么?
- 为什么.NET 我的项目中会有 NuGet?
- 如何应用 NuGet 程序包?
特地的,文中学习了如何装置基于微软官网托管 (nuget.org) 的共享 NuGet 包。
那当初有人可能会问了:“我的程序集是集体或公司外部的,如果以都公布到 nuget.org 托管,那么不是所有都能下载和援用了吗?有没有可能把集体或公司外部的程序集上传到一个公有的 NuGet 服务器,只让局部开发者能够拜访呢?”
答案是必定的,你想到的他人也同样遇到了,并且也有一些不错的解决方案,其中之一即是搭建本人的 NuGet 程序包托管服务。可选的利用组件次要有:NuGet.Server、LiGet 等,这里列出的两个 NuGet 包服务器利用组件均是开源的,能够收费下载和应用。
本文次要为大家分享如何应用 BaGet 极速搭建属于本人的公有 NuGet 包服务器,如何公布、更新公有 NuGet 包到 BaGet 服务器,如何在 Visual Studio 中的 NuGet 包管理器的程序包源配置中增加 BaGet 源等技术。
BaGet 极速搭建 NuGet 包服务
BaGet 简介
如上文所述,BaGet是一个开源的、轻量级的 NuGet 包服务器利用组件。BaGet 源码托管地址为:https://github.com/loic-sharm…。
BaGet 是基于.NET Core 开发的 NuGet 包服务器利用组件,因而须要运行环境装置.NET Core SDK,BaGet 具备以下个性:
- 极速部署
- 反对跨平台
- 反对 docker 容器化部署
- 反对云存储
- 反对离线缓存
- 反对包硬删除
- 配置长久化反对多种数据库类型
BaGet 装置
注:以下装置在 Windows 操作系统中演示。
在文中已屡次提到 极速装置 这个动作,那么 BaGet 的装置到底有那极速呢?让咱们一起来体验一下吧!
- 装置.NET Core SDK
- 下载 BaGet 程序压缩包,点击这里
- 解压刚下载的 BaGet 程序压缩包,关上命令行,定位到 BaGet 程序根目录,运行命令
dotnet BaGet.dll
- 在浏览器中关上地址:http://localhost:5000/
怎么样,是不是超级简略、超级快捷呢!!!
运行命令示意图:
浏览器中看到的成果如图:
从图中能够看到,BaGet 默认监听了 5000
端口,如果你须要批改端口,则关上 appsettings.json 配置文件,将 kestrel
配置选项的正文去掉,而后批改端口号为本人须要的即可,如下:
// Uncomment this to configure BaGet to listen to port 8080.
// See: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#listenoptionsusehttps
"kestrel": {
"endpoints": {
"http": {"url": "http://localhost:5555"}
}
}
特地留神:以上以 dotnet BaGet.dll
形式运行的 BaGet 包服务还没有设置 API 密钥,也就是说任何晓得 BaGet 地址的人都是能够对其进行操作,如公布包,更新包,删除包等。所以,为了平安起见,倡议为你的公有 BaGet 包服务配置一个 API 密钥。配置形式也非常简单,还是关上 appsettings.json 配置文件,批改选项,如下:
{"ApiKey": "NUGET-SERVER-API-KEY", // 这里批改成你的密钥即可(任意字符串)
//...
}
更多 BaGet 的配置,请见 BaGet 官网配置阐明
公布程序包到 BaGet 服务
如下图所示:
首先,点击图中①所示的 Upload 按钮,界面将切换到上传 NuGet 包界面,这里展现了几个重要的信息:
- BaGet 包服务索引的地址为图中②标注的地址
- 应用 4 种不同的命令行 (别离为:.NET CLI, NuGet CLI, Paket CLI, PowerShellGet) 公布 NuGet 包
注:如果你不喜爱命令行的形式公布 NuGet 包,举荐应用 NuGet Package Explorer 公布、更新 NuGet 包,能够在 Windows 10 的利用商店下载、装置NuGet Package Explorer。
应用命令行公布 NuGet 包的命令如标记③所示。
为了演示如何将自制 NuGet 包公布、更新到 BaGet 服务,咱们先来创立一个演示用的 C#(.NET 5)类库,并在这个类库中创立一个微信领取类 (WeChatPay.cs) 及演示领取办法,如图:
再右键单击我的项目 WeChatPay -> 打包,如图:
打包后果如图:
在.nupkg 所在目录关上命令提示符工具,执行 NuGet 包的发布命令,如下:
注:本示例并未设置 API 密钥,如果你设置了 BaGet 的 API 密钥,请在发布命令中附加 API 密钥的参数(-k),如:
dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY WeChatPay.1.0.0.nupkg
看到图中所示的“Your package was pushed.”示意 NuGet 包胜利公布到了方才用 BaGet 搭建的公有 NuGet 包服务器。
刷新浏览器地址:http://localhost:5000/,NuGet 包列表中呈现了 WeChatPay 这个 NuGet 包,如图:
装置公有 NuGet 包
将 NuGet 包胜利上传到 BaGet 搭建的公有服务器之后,便可下载安装和应用了,接下来咱们来配置 Visual Studio 的 Nuget 包源以增加公有 BaGet 包源地址。关上 Visual Studio 的 选项 -> NuGet 包管理器 -> 程序包源,顺次实现下图中的操作:
步骤 2:点击 + 号,新增一个程序包源项
步骤 3:选中步骤 2 中新增的项,在 3 处的广西框中填入程序包源的名称 (可任意取名)
步骤 4:填入公有 NuGet 包的服务索引地址
步骤 5:点击 更新 按钮,以更新程序包源的信息
步骤 6:点击 确定 按钮,以保留新增的程序包源信息
好了,当初回到 Visual Studio 的主界面,将下面创立的 WeChatPay 类库我的项目删除,只保留 ConsoleApp1 这个演示用的控制台我的项目,如图:
右键单击 ConsoleApp1 我的项目的 依赖项 -> 治理 NuGet 程序包,如图:
在关上界面的右上角能够看到程序包源的下拉框,下拉列表中会列出下面新增的 公有 NuGet程序包源的选项,点击选中此项,NuGet 列表会主动刷新,之后将看到咱们上传的自制程序包WeChatPay,如图:
选中 WeChatPay 包,点击右侧的 装置 按钮,以在以后我的项目中装置此程序包,如图:
再次回到 Visual Studio 编辑器主界面,当初咱们便能够调用 WeChatPay 这个包中可拜访的资源了,如图:
运行后果如图:
更新 NuGet 包
更新 NuGet 包其实就一公布一个新版本的 NuGet 包,这里不再赘述。
后话
笔者认为,本文十分详尽地形容和分享了 BaGet 搭建公有 NuGet 服务的全过程。与题目相同,尽管用 BaGet 搭建公有 NuGet 服务起码可能只须要 1 分钟,但写这篇文章可不至啊。
文章从材料整顿、内容撰写、示例测试到最初的稿件审阅、公布,花了 Rector 不少于残缺的 5 个小时(写这类技术文章是真的磨人啊 -_-)。
如有什么问题,欢送评论区留言反馈。
如果你感觉本文有价值,请来个三连 (点赞,珍藏,评论) 吧,谢谢。