【微软技术栈】发布自己造的轮子 -- 创建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 文件)都应包含在项目中。

3a647a3f9fc94dbade199970cc13fe92.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.rhkb.cn/news/214808.html

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

相关文章

生产上线需要注意的安全漏洞

一、关闭swagger 1、关闭swagger v3 # 需同时设置auto-startupfalse&#xff0c;否则/v3/api-docs等接口仍能继续访问 springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false 2、关闭swagger v2 # 只要不是true就不启用 swagger:enable: fa…

YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进【NO.83】将主干特征提取网络Backbone改为RevCol

前言 作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程项目…

Vue3: 给表格多个字段添加排序功能

问题 在Vue3项目中&#xff0c;使用element-plus的表格组件绘制表格后&#xff0c;需要令表格的多个字段可以进行选择排序&#xff08;选择升序或者降序&#xff09;但是排序功能好像有时候会出错&#xff0c;需要排序的字段多了之后&#xff0c;排序功能有时候会不起作用 解…

分子生成领域的stable diffusion - GEOLDM

一、关于stable diffusion 很多人都知道stable diffusion&#xff0c;stable diffusion的出现改变了机器生成领域&#xff0c;让AI技术第一次无比的接近正常人。大语言模型&#xff0c;AIGC概念于是兴起。基于stable diffusion 大家开发了lora&#xff0c; hyperwork等微调技术…

JDK 9 模块化系统 (Module System) 和 多版本兼容 Jar (Multi-Release Jar)

博文目录 文章目录 Module System原因JDK 模块化模块描述文件关键字 启用模块化测试结论 Multi-Release jar (MRJAR)原因原理结论用 IDEA 创建多版本兼容 Jar项目结构pom.xml测试 Module System 原因 Java 9引入了模块化系统的主要原因是为了解决Java平台面临的复杂性和可维…

从电商API接口谈电商ERP系统介绍

部分网友反馈小红书APP出现闪退问题。对此&#xff0c;小红书客服微博发文称&#xff0c;如遇到小红书APP无法启动的情况&#xff0c;用户可前往App Store下载最新版本&#xff08;详情可见&#xff1a; &#xff09;小红书闪退崩溃出bug&#xff0c;IT人员要背故障吗&#xff…

【计算机网络实验】实验三 IP网络规划与路由设计(头歌)

目录 一、知识点 二、实验任务 三、头歌测试 一、知识点 IP子网掩码的两种表示方法 32位IP子网掩码&#xff0c;特点是从高位开始连续都是1&#xff0c;后面是连续的0&#xff0c;它有以下两种表示方法&#xff1a; 传统表示法&#xff0c;如&#xff1a;255.255.255.0IP前…

windows下oracle透明网关安装

上一次说了如何在Linux下安装oracle到sqlserver之间的透明网关&#xff0c;现在给大家继续介绍如何在windows下安装。 本文实验环境&#xff1a; 数据库类型 数据库版本 IP oracle 11204 192.168.238.122 MSSQL MSSQL 2008 192.168.239.40 一、oracle服务器配置ODBC源…

linux软件管理

八、软件管理 RPM相关命令 8.1 RPM包管理 8.1.1 RPM概述 RPM Package Manager (原Red Hat Package Manager&#xff0c;现在是一个递归缩写&#xff09; ​ 由Red Hat公司提出&#xff0c;被众多 Linux 发行版所采用也称二进制( binary code) 无需编译,可以直接使用 ​ 无法设…

重磅!2023中国高校计算机大赛-人工智能创意赛结果出炉

目录 中国计算机大赛-人工智能创意赛现场C4-AI大赛颁奖及留影800个AI应用&#xff1f;这届大学生真能“搞事情”AI原生时代&#xff0c;百度要再培养500大模型人才 中国计算机大赛-人工智能创意赛现场 12月8日&#xff0c;杭州&#xff0c;一位“白发老人”突然摔倒在地&#…

Verilog学习 | 用initial语句写出固定的波形

initial beginia 0;ib 1;clk 0;#10ia 1; #20ib 0;#20ia 0; endalways #5 clk ~clk; 或者 initial clk 0;initial beginia 0;#10ia 1; #40ia 0; endinitial beginib 1;#30 ib 0; endalways #5 clk ~clk;

深入探索C语言中的二叉树:数据结构之旅

引言 在计算机科学领域&#xff0c;数据结构是基础中的基础。在众多数据结构中&#xff0c;二叉树因其在各种操作中的高效性而脱颖而出。二叉树是一种特殊的树形结构&#xff0c;每个节点最多有两个子节点&#xff1a;左子节点和右子节点。这种结构使得搜索、插入、删除等操作…

強強联手!M88明陞宣布与G2 电子竞技俱乐部成为官方合作伙伴!

M88明陞作为亚洲领先的在线游戏平台&#xff0c;正式宣布与G2电子竞技俱乐部建立具有突破性意义的官方合作伙伴关系&#xff0c;G2电子竞技俱乐部是全球领先的电子竞技品牌之一。作为官方合作伙伴关系&#xff0c;双方将合作开展一系列活动。 M88明陞将在G2 电子竞技俱乐部追求…

推荐4个优秀的 Python 时间序列分析库

时间序列分析在金融和医疗保健等领域至关重要&#xff0c;在这些领域&#xff0c;理解随时间变化的数据模式至关重要。在本文中&#xff0c;我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库…

初识人工智能,一文读懂贝叶斯优化的知识文集(6)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

IDEA中配置Git

Git 在IDEA中使用Git1 在IDEA中配置Git2 在IDEA中使用Git2.1在IDEA中创建工程并将工程添加至Git2.2 将文件添加到暂存区2.3 提交文件2.4 将代码推送到远程仓库2.5 从远程仓库克隆工程到本地2.6 从远程拉取代码2.7 版本对比2.8 创建分支2.9 切换分支2.10 分支合并 3 使用IDEA进行…

【HarmonyOS开发】详解常见容器的使用

声明式UI提供了以下8种常见布局&#xff0c;开发者可根据实际应用场景选择合适的布局进行页面开发。 布局 应用场景 线性布局&#xff08;Row、Column&#xff09; 如果布局内子元素超过1个&#xff0c;且能够以某种方式线性排列时优先考虑此布局。 层叠布局&#xff08;St…

Windows系统Java开发环境安装

总结一下Java软件开发工程师常见的环境的安装&#xff0c;仅限Windows环境。 以下下载链接均来自官网&#xff0c;网络条件自己克服。 目录 1. JDKJDK Oracle 官网下载地址配置系统环境变量 2. Mavenapache maven 官网地址本地仓库和中央仓库配置配置系统环境变量 3. GitGit 官…