制作nuget包并上传到nuget.org

下面是一个详细的步骤指南,用于创建一个简单的 C# NuGet 包并将其发布到 NuGet.org。我们将创建一个简单的数学库作为示例。

步骤 1: 创建一个新的类库项目

首先,我们需要创建一个新的类库项目。这可以通过 Visual Studio 或者 .NET CLI 完成。

使用 .NET CLI:

打开命令行(例如 PowerShell、CMD 或 Terminal),然后运行以下命令:

dotnet new classlib --name SimpleMathLibrary
cd SimpleMathLibrary

这将创建一个名为 SimpleMathLibrary 的新类库项目,并将当前目录更改为项目目录。

使用 Visual Studio:
  1. 打开 Visual Studio,点击“创建新项目”。
  2. 在搜索框中搜索“类库”,选择“类库(C#)”选项,然后点击下一步。
  3. 输入项目名称“SimpleMathLibrary”,选择一个位置,然后点击“创建”。

步骤 2: 添加逻辑到类库

修改 Class1.cs 文件或者创建一个新的 C# 类文件来添加你的逻辑。以下是一个简单函数的示例,用于演示:

// Filename: MathOperations.cs
using System;

namespace SimpleMathLibrary
{
    public static class MathOperations
    {
        public static int Add(int a, int b)
        {
            return a + b;
        }
    }
}

步骤 3: 配置项目文件

编辑项目的 .csproj 文件,添加 NuGet 包的元数据信息:
注意:PackageId一定要是有效的,可以在nuget.org,上搜索看看是否已经存在

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <PackageId>pzx_test_add</PackageId>
    <Version>1.0.0</Version>
    <Authors>YourName</Authors>
    <Company>YourCompanyName</Company>
    <Description>一个简单的数学运算类库。</Description>
  </PropertyGroup>

</Project>

请确保替换 YourNameYourCompanyName 为相应的值。

步骤 4: 构建并打包

使用 .NET CLI 构建并打包 NuGet 包:

dotnet pack

这将在 bin\Release 目录下创建一个 NuGet 包 (pzx_test_add.1.0.0.nupkg)。

步骤 5: 获取 NuGet.org API 键

在发布你的包之前,你需要在 NuGet.org 上注册账号并获取 API 键:

  1. 访问 NuGet.org 并登录或创建一个新账户。
  2. 导航到你的账户设置,找到 API Keys 部分并创建一个新的 API 密钥。
  3. 保存你的 API 密钥,你将在下一步中使用它。
    在这里插入图片描述

步骤 6: 发布包到 NuGet.org

使用以下命令将你的包发布到 NuGet.org:

dotnet nuget push ".\bin\Realse\pzx_test_add.1.0.0.nupkg" --api-key your-api-key --source https://api.nuget.org/v3/index.json

也可以直接在网站上浏览,本地文件上传(记得点击sumbit)
在这里插入图片描述

确保替换 your-api-key 为实际的 API 密钥。

步骤 7:查看发布好的包

上传到nuget.org,刷新有点慢,需要等待一段时间
在这里插入图片描述
根据自己的需求选择合适的方式下载包
在这里插入图片描述

步骤 8:验证,上传的包是否正确

创建一个控制台项目,引入pzx_test_add 包
在这里插入图片描述

控制台输出:结果:3

小结

现在,你已经成功创建并发布了一个简单的 C# NuGet 包到 NuGet.org。你可以继续添加更复杂的逻辑和功能到你的类库中,并遵循相同的步骤来更新 NuGet 包。

记住,好的 NuGet 包应该有明确的文档、清晰的使用说明和充分的测试。祝你在 NuGet 包开发的旅程中一切顺利!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

P6维护:P6 数据库迁移Step by Step

前言 根据大家的近期给的提议&#xff0c;这里简单介绍如何迁移P6数据库&#xff0c;场景选取为从将P6从ORACLE迁移到SQLServer。 Oracle Primavera P6 PPM 以及 EPPM 均有其自带的migrate工具完成数据库迁移&#xff0c;整个操作也较为傻瓜式&#xff0c;只要有基本的数据库…

Swagger3/2+Spring boot 使用小结

一&#xff1a;前言 Swagger 是一个 RESTful API 的开源框架&#xff0c;它的主要目的是帮助开发者设计、构建、文档化和测试 Web API。Swagger 的核心思想是通过定义和描述 API 的规范、结构和交互方式&#xff0c;以提高 API 的可读性、可靠性和易用性&#xff0c;同时降低 A…

RIP,EIGRP,OSPF的区别

1.路由协议 能否选择出最优路径 2.路由协议 是否能够完成故障切换/多久能够完成故障切换 3.路由协议 是否会占用过大硬件资源 -- RIP -- 路由信息协议 跳数:一次三层设备的转发算一跳 中间隔的设备数量 不按照链路带宽来算 Rip认为路径一样,这个时候。 下面这个跳数不…

[NCTF2019]SQLi ---不会编程的崽

欸嘿&#xff0c;继续sql注入。又是新的sql注入类型 很直接哦&#xff0c;给出了sql查询语句。简单扫描一下&#xff0c;robots.txt还能访问。里边提示hint.txt $black_list "/limit|by|substr|mid|,|admin|benchmark|like|or|char|union|substring|select|greatest|%00…

Neo4j桌面版导入CVS文件

之后会出来一个提示框&#xff0c;而且会跳出相关文件夹&#xff1a; 然后我们将CSV文件放在此目录下&#xff1a; 我们的relation.csv是这样的 参见&#xff1a; NEO4J的基本使用以及桌面版NEO4J Desktop导入CSV文件_neo4j desktop使用-CSDN博客

[BT]BUUCTF刷题第4天(3.22)

第4天&#xff08;共3题&#xff09; Web [极客大挑战 2019]Upload 这是文件上传的题目&#xff0c;有一篇比较详细的有关文件上传的绕过方法文件上传漏洞详解&#xff08;CTF篇&#xff09; 首先直接上传带一句话木马的php文件&#xff0c;发现被拦截&#xff0c;提示不是图…

HTTP(2)

HTTP 通信过程包括从客户端发往服务器端的请求及从服务器端返回客户端的响应。 那么请求和响应是怎样运作的呢 HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文。 请求端&#xff08;客户端&#xff09;的HTTP 报文叫做请求报文&#xff0c;响应端&#xff08;服务器…

BUUCTF-Misc12

[BJDCTF2020]纳尼1 1.打开附件 一张打不开的图片和一个没什么用的文本文档 2.010 Editor 用010 Editor 打开6.gif这个文件 发现文件头缺少 .gif 的文件头是47 49 46 38 添加文件头并保存 得到一个动图&#xff0c;由四张图片组成 得到一串看似像base64的编码&#xff1a;Q…

第六届“传智杯”决赛 流水账 | 珂学家

前言 整体评价 有幸参加了第六届的传智杯决赛(A组)&#xff0c;因为这个比赛是牛客协办&#xff0c;所以就写在这里。 作为Java选手&#xff0c;比赛中其实吃亏了&#xff0c;主要是T2吃了一发TLE&#xff0c;T4吃了一发莫名其妙的MLE。 顺便吐槽下T3&#xff0c;自测反馈WA…

鸿蒙ArkUI【开发移植Carbon】

项目介绍 本项目是基于开源项目[Carbon] 进行harmonyos化的移植和开发的。 移植版本&#xff1a;Branches/master 这不是单纯只是API和基本功能展示demo&#xff0c;它是最有用的自定义控件的实现&#xff0c;如设计规范中所示。 Carbon试图&#xff1a; 让事情变得更简单&…

手把手教你如何下载学浪上已购买的视频课程

全程干货,教大家如何下载学浪上已购买的视频课程 这个软件已经集成了学浪下载课程的功能 使用也特别简单 链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码&#xff1a;kqvj --来自百度网盘超级会员V10的分享 详细操作按照图片流程 一、…

DP:路径规划模型

创作不易&#xff0c;感谢三连支持&#xff01; 路径规划主要是让目标对象在规定范围内的区域内找到一条从起点到终点的无碰撞安全路径。大多需要用二维dp数组去实现 一、不同路径 . - 力扣&#xff08;LeetCode&#xff09;不同路径 class Solution { public:int uniquePath…

10一维数组

一维数组是什么&#xff1f; // 相同的数据类型的元素组成的有序集合 // 创建一个一维数组 // 例如&#xff1a; int a[5]{1,2,3,4,5}; //说明&#xff1a; // int:表示数据类型 // a:表示数组名 // [5]&#xff1a;数组的长度 // {1,2,3,4,5} &#xff1a;数组的元素 // 一…

Photoshop 工具使用详解(全集 · 2024版)

全面介绍 Photoshop 工具箱里的工具&#xff0c;点击下列表格中工具名称或图示&#xff0c;即可查阅工具的使用详解。 移动工具Move Tool移动选区、图层和参考线。画板工具Artboard Tool创建、移动多个画布或调整其大小。moVe快捷键&#xff1a;V 矩形选框工具 Rectangular Mar…

视频素材库有哪些网站?6大高质量素材网告诉您

真正的创作始于灵感的火花&#xff0c;而优秀的素材则是让这火花燎原的燃料。在视频创作的广阔天地里&#xff0c;每一帧画面、每一个音符、每一段动画都承载着讲述故事的力量。以下精选的素材网站&#xff0c;无论是为了增添你视频的视觉震撼力&#xff0c;还是为了丰富故事的…

sql注入五-WEB攻防-注入工具SQLMAPTamper编写指纹修改高权限操作目录架构

演示案例&#xff1a; 数据猜解-库表列数据&字典权限操作-文件&命令&交互式提交方法-POST&HEAD&JSON绕过模块-Tamper脚本-使用&开发分析拓展-代理&调试&指纹&风险&等级 #参考&#xff1a; https://www.cnblogs.com/bmjoker/p/9326258.…

状态机高阶讲解-10

1896 01:19:16,700 --> 01:19:19,550 那接下来我们就开始来建模了 1897 01:19:20,690 --> 01:19:22,163 那建模的开始呢 1898 01:19:22,163 --> 01:19:24,900 我们就首先要添加一个类了 1899 01:19:26,330 --> 01:19:27,868 那我们这个很简单 1900 01:19:27,86…

主干网络篇 | YOLOv8更换主干网络之GhostNet

前言:Hello大家好,我是小哥谈。GhostNet是2019年由华为诺亚方舟实验室发布的轻量级网络,速度和MobileNetV3相似,但是识别的准确率比MobileNetV3高,在ImageNet ILSVRC2012分类数据集的达到了75.7%的top-1精度。该论文提除了Ghost模块,通过廉价操作生成更多的特征图。基于一…

【go从入门到精通】for循环控制

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

结构体与共用体

1概述 迄今为止&#xff0c;已介绍了基本类型(或称简单类型)的变量(如整型、实型、字符型变量等)。也介绍了一种构造类型数据一-数组&#xff0c;数组中的各元素是属于同一个类型的。 但是只有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用…