本文首发于码友网--《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的装置到底有那极速呢?让咱们一起来体验一下吧!

  1. 装置.NET Core SDK
  2. 下载BaGet程序压缩包,点击这里
  3. 解压刚下载的BaGet程序压缩包,关上命令行,定位到BaGet程序根目录,运行命令dotnet BaGet.dll
  4. 在浏览器中关上地址: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个小时(写这类技术文章是真的磨人啊-_-)。

如有什么问题,欢送评论区留言反馈。

如果你感觉本文有价值,请来个三连(点赞,珍藏,评论)吧,谢谢。