【微软技术栈】发布自己造的轮子 -- 创建Nuget包(分布操作)

目录

1、您的项目

2、创建 .nuspec 文件

3、一张图片胜过一千个拉取请求

4、包括自述文件 MD 文件

5、构建软件包

6、将包部署到 Nuget.Org

7、手动上传软件包

8、自动化和脚本化部署

9、我们如何构建和部署 ErrLog.IO Nuget 包

10、Nuget统计数据

11、最后的思考


创建 Nuget 包是一个相对简单的过程,但第一次可能有点令人生畏。本教程将逐步引导您完成该过程。

Microsoft 提供了有关 Nuget 的全面文档,但我们在此处简化了该过程以提供帮助。

1、您的项目

理想情况下,Nuget 包应为 .NET Framework 类库。在我们的实例中,我们使用一个 C# 实例,并且该包在所有意图中都是一个普通的类库。

要包含在包中的任何文件(如文档或 readme.md 文件)都应包含在项目中。

standard-class-library-r-700.PNG

2、创建 .nuspec 文件

Nuget 包的主要组件是 .nuspec 文件。这是一个表示包的 XML 文件,包含 Nuget.org 发布包所需的所有信息。

虽然不是必需的,但如果将 .nuspec 文件包含在项目的根目录中,则会使工作变得更容易一些。

空的 .nuspec 文件如下所示。这是可用于创建第一个包的基本结构。

XML格式
<?xml version="1.0"?>
<package  xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"><metadata>    <id></id><version></version><title></title><authors></authors><owners></owners><licenseUrl></licenseUrl><projectUrl></projectUrl><iconUrl></iconUrl><requireLicenseAcceptance>false</requireLicenseAcceptance><description></description><releaseNotes></releaseNotes><copyright></copyright><tags></tags><dependencies><dependency id="" /></dependencies><summary></summary></metadata><files><file src="" target="" /></files>
</package>

一个真实的例子 - 我们的 ErrLog.IO.Nuspec 文件

XML格式
<?xml version="1.0"?>
<package  xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"><metadata>    <id>errlog.io</id><version>1.1.18</version><title>ErrLog.IO Error and Exception Logging Tool</title><authors>Matthew Proctor, Michael Sanders, Alastair Bateman</authors><owners>kutamo</owners><licenseUrl>https://errlog.io/terms</licenseUrl><projectUrl>https://errlog.io/docs/getting-started</projectUrl><iconUrl>https://www.errlog.io/images/errlog_dark_logo.png</iconUrl><requireLicenseAcceptance>false</requireLicenseAcceptance><description>ErrLog.IO is an exception and error logging tool</description><releaseNotes>Bug fixes and performance improvements </releaseNotes><copyright>Copyright 2017 Kutamo Pty. Ltd.</copyright><tags>exceptions web http error logging</tags><dependencies><dependency id="Newtonsoft.Json" version="10.0"  /></dependencies><summary>ErrLog.IO is an exception and error logging tool.</summary></metadata><files><file src="readme.md" target="" /></files>
</package>

必需的 .nuspec 元素

元素描述或细节
id不区分大小写的包标识符,该标识符在 nuget.org 中必须是唯一的。ID 不能包含对 URL 无效的空格或字符,并且通常遵循 .NET 命名空间规则。
version包的版本,遵循以下模式。请确保为每个后续包部署更新此值。major.minor.patch
description用于 UI 显示的包的长描述 - 这应该是对包及其提供的功能的描述。
authors以逗号分隔的包作者列表,与 nuget.org 上的配置文件名称匹配。

有用但可选的 .nuspec 元素

元素描述或细节
title只需包的标题,通常在 UI 中显示为 nuget.org 和 Visual Studio 中的包管理器。如果未指定,则使用包 ID。
projectUrl程序包主页的 URL,通常显示在 UI 显示和 nuget.org 中。
licenseUrl包许可证的 URL(如果有)。
iconUrl具有透明背景的 64x64 图像的 URL,用作 UI 显示中包的图标。这必须是完全限定的 URL。如果未指定,则包将具有默认的 Nuget 徽标。
releaseNotes在此版本的包中所做的更改的简要说明。
copyright软件包的版权详细信息。

.nuspec 文件具有许多其他配置选项,此处记录了这些选项。

3、一张图片胜过一千个拉取请求

为了帮助您的软件包与 Nuget.org 库中的数千个其他软件包区分开来,创建自己的徽标是个好主意。

徽标必须是具有透明背景的 64x64 像素图像,并且包含在 .nuspec 文件的元素中。<iconUrl></iconUrl>

4、包括自述文件 MD 文件

readme.md 文件是向用户提供有关如何使用包的说明的好方法。

安装包后,这将显示在 Visual Studio 中,并使用 markdown 编写。

您可以在此处查看我们的自述文件。

5、构建软件包

创建 .nuspec 文件后,现在可以生成包了!

Nuget.Org 提供了一个应用程序 nuget.exe用于将库捆绑到 Nuget 包中。如果使用的是 Visual Studio,则应该已经安装了此软件,也可以从 nuget.org/downloads 下载它。

Nuget.exe 需要从项目文件夹内运行,因此最简单的方法是从命令提示符或 powershell 窗口进入此文件夹。

cd \your_project_folder\

Nuget.Exe 包存储库

如果你的库使用任何包,则需要告诉 Nuget 它们在电脑上的位置。这是通过使用 -Set repositoryPath 参数运行 nuget.exe 来完成的。

如果使用的是 Visual Studio,则包文件夹通常位于解决方案的根文件夹中。

nuget.exe config -Set repositoryPath="\full-path-to-your-packages-folder\"

现在,我们可以创建包了。在下面的示例中,我们将生成配置设置为 Release。

nuget.exe pack -IncludeReferencedProjects -properties Configuration=Release

使用这些选项,Nuget 将创建一个 .nupkg,其中包含任何引用的包和项目。

使用以下格式自动创建包文件名[package id].[package version].nupkg

例如,最近的软件包文件名是 errlog.io.1.1.18.nupkgErrLog.IO

6、将包部署到 Nuget.Org

准备好 .nupkg 文件后,现在可以将其部署到 Nuget.Org。

此时,我们假设您已经在 Nuget.Org 上创建了一个帐户,并创建了一个 API 密钥。

7、手动上传软件包

只需访问 https://www.nuget.org/packages/manage/upload,即可将 .nupkg 文件上传到 nuget。

Nuget 将打开包,读取 .nuspec 文件,然后发布包,只需一个步骤即可完成。

8、自动化和脚本化部署

NuGet.exe 能够自动上传包 - 这意味着你可以编写脚本来自动生成和部署包,无需交互。

若要通过 nuget.exe 上传包,首先需要设置 API 密钥。您可以在 Nuget.Org 上的帐户中创建 API 密钥。

nuget.exe config setApiKey aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

设置 API 密钥后,现在可以使用 Nuget.Exe 将包推送到 Nuget.Org。这听起来很奇怪,不管你说多少次。

nuget.exe push [your-package-filename].nupkg -Source https://www.nuget.org/api/v2/package

方便的提示!

该命令还支持通配符,因此您只需使用单个命令即可自动推送文件夹中的任何 .nupkg 文件。push

nuget.exe push *.nupkg -Source https://www.nuget.org/api/v2/package

9、我们如何构建和部署 ErrLog.IO Nuget 包

我们使用一个简单的批处理文件来自动生成和部署我们的 Nuget 包,我们很高兴在下面分享它(对一些项目进行了模糊处理)。ErrLog.IO

REM Move to project folder
cd E:\ErrLog\ErrLogNuget\REM Configure Nuget Settings
nuget config -Set repositoryPath="E:\ErrLog\packages"
nuget setApiKey aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeREM Create Nuget Package
nuget pack -IncludeReferencedProjects -properties Configuration=ReleaseREM Deploy to Nuget.Org
nuget push *.nupkg -Source https://www.nuget.org/api/v2/package

10、Nuget统计数据

Nuget 包页提供了包下载的便捷摘要,以及数据透视表形式的更多详细信息,使你能够查看每个版本和每个客户端类型的下载。

11、最后的思考

部署用于全球分发的 Nuget 包很容易,但也很容易意外部署损坏的包,因为测试是你的责任。

请确保你有一个可靠的测试过程,以便在发布包后立即下载和验证包,以确保你的用户有一个出色且无错误的体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电话卡Giffgaff激活

Giffgaff是一家总部位于英国的移动电话公司。作为一家移动虚拟网络电信运营商&#xff0c;Giffgaff使用O2的网络&#xff0c;是O2的全资子公司&#xff0c;成立于2009年11月25日。 Giffgaff与传统的移动电话运营商不同&#xff0c;区别在于其用户也可以参与公司的部分运营&…

Java简易版:UDP协议实现群聊

服务端&#xff1a; package 二十一章;import java.io.*; import java.net.*; import java.util.ArrayList; public class T{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void…

翡翠手镯镯子断了怎么修复?

修复翡翠镯子需要谨慎对待&#xff0c;因为翡翠是一种比较脆弱的宝石&#xff0c;不适合使用一般的胶水或者粘合剂。必须选择针对翡翠手镯玉器玉石珠宝宝石石材专用的胶粘剂&#xff1a; 1.收集断裂的部分&#xff1a; 尽量收集到所有断裂的部分&#xff0c;包括碎片。这有助于…

Raspberry Pi 2, 2 of n - Pi 作为 IoT 消息代理

目录 介绍 环境 先决条件 - 设置静态 IP 地址 安装 Mosquitto 启动/停止 Mosquitto 配置先决条件 - 安装 mqtt_spy 配置 Mosquitto 配置 Mosquitto - 无安全性 测试 Mosquitto 配置 - 无安全性 配置 Mosquitto - 使用密码身份验证 Mosquitto 测试 - 带密码验证 概括 介绍 在本文…

数据二十条

"数据二十条"即中共中央、国务院关于构建数据基础制度更好发挥数据要素作用的意见&#xff0c;全文共分为五章二十条。 一、发布 2022年6月22日召开了中央全面深化改革委员会第二十六次会议。审议通过《关于构建数据基础制度更好发挥数据要素作用的意见》。 2022…

机器学习应用 | 使用 MATLAB 进行异常检测(下)

在使用MATLAB 进行异常检测&#xff08;上&#xff09;中&#xff0c;我们探讨了什么是异常值&#xff0c;简单的一维数据异常检测问题&#xff0c;针对高维数据的有监督异常检测方法。 在&#xff08;下&#xff09;篇中&#xff0c;我们将和大家一起探讨无监督异常检测。 没…

智能优化算法应用:基于金枪鱼群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于金枪鱼群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于金枪鱼群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.金枪鱼群算法4.实验参数设定5.算法结果6.参考…

linux搭建nacos集群

准备 检查是否安装jdk [roothao /usr/local/software/elk/logstash]# java -version java version "1.8.0_341" Java(TM) SE Runtime Environment (build 1.8.0_341-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)配置nacos 去github下载…

【PTA-C语言】编程练习4 - 数组Ⅰ

如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习4 - 数组Ⅰ&#xff08;1~7&#xff09; 7-1 评委打分&#xff08;分数 10&#xff09;7-2 组合数的和&#xff08;分数 10&#xff09;7-3 找不同&#xff08;分数 15&#xff09;7-4 利用二分查找…

【Python】Python音乐网站数据+音频文件数据抓取(代码+报告)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

数据库:JDBC编程

专栏目录 MySQL基本操作-CSDN博客 MySQL基本操作-CSDN博客 数据库的增删查改&#xff08;CRUD&#xff09;基础版-CSDN博客 数据库增删改查&#xff08;CRUD&#xff09;进阶版-CSDN博客 数据库的索引-CSDN博客 基本概念 JDBC编程就是通过Java代码来操作数据库 api 数据库是…

深入理解网络 I/O 多路复用:SELECT、POLL

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

工业4G路由器助力轨道交通城市地铁实现数字化转型

随着城市的科技不断发展&#xff0c;地铁系统的智能化程度也在不断提高。地铁闸机的网络部署已经成为地铁建设中必不可少环节。而4G路由器作为地铁闸机的网络通讯设备&#xff0c;助力轨道交通地铁闸机实现数字化转型。 工业4G路由器在地铁系统光纤宽带网络遇到故障或其他问题…

CGAL的推进前表面重建

从非结构化点云进行的曲面重建相当于生成一个合理的曲面&#xff0c;该曲面很好地近似于输入点。由于可能生成许多曲面&#xff0c;因此此问题不适合解决。已经提出了一系列广泛的方法来解决这个问题。其中包括变分方法、张量表决、隐式曲面和Delaunay三角剖分。 对于基于Delau…

gRPC三种流和消息格式

文章目录 消息格式RPC流长度前缀的消息分帧请求消息响应信息 三种流一元RPC服务流RPC客户流RPC双工流RPC 代码仓库 消息格式 RPC流 服务端实现protocol buffer定义的方法&#xff0c;客户端保留一个存根&#xff0c;提供服务端方法的抽象&#xff0c;客户端只需要调用存根中的…

【dig命令查询方法】

dig&#xff08;Domain Information Groper&#xff09;是一个用于查询DNS&#xff08;域名系统&#xff09;的命令行工具&#xff0c;它可以帮助您获取关于域名的各种信息&#xff0c;如IP地址、MX记录、NS记录等。下面是dig的详细使用教程。 基本语法&#xff1a; dig [ser…

文件被删除了怎么恢复?3个宝藏方法,快来get!

“我是一个学生党&#xff0c;期末的一些资料保存在电脑上&#xff0c;但是不知道是不是被我误删了&#xff0c;导致很多文件都找不到了。文件被删除了怎么恢复呢&#xff1f;大家帮我出出主意吧&#xff01;” 对于经常在电脑上保存各种文件的用户来说&#xff0c;文件误删除是…

IPC之五:使用 System V 信号量集解决经典的‘哲学家就餐问题‘

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本文主要介绍信号量集(Semaphore Sets)&#xff0c;尽管信号量集被认为是 IPC 的一种方式&#xff0c;但实际上通常把信号量集用于进程间同步或者资源访问互斥&#xff0c;信号量集和共享内存(Shared …

系列学习前端之第 2 章:一文精通 HTML

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料&#xff1a; 链接: https://pan.baidu.com/s/1-vY2anBdrsBSwDZfALZ6FQ 提取码: 6666 HTML 全称&#xff1a;HyperText Markup Language&#xff08;超文本标记语言&#xff09; 1、 HTML 标签 1. 标签又称元素&#…

PR剪辑视频素材|真实胶片特效转场PR项目模板文件

Premiere转场模板&#xff0c;8个真实胶片特效转场PR项目模板视频素材。可以编辑和自定义媒体占位符。在视频的开头、中间和结尾使用。包含视频教程。 适用软件&#xff1a;PR2023及更新版本 | 分辨率&#xff1a;38402160 (4K) | 文件大小&#xff1a;16.43MB | 无需插件 来自…