发布nuget包的正确姿势---cicd自动打包发布

最轻便的发布nuget包方式,方便cicd自动打包发布nuget包

首先新建项目

a2db1536f43d244603a4770cb9a5d393.png

项目名随便取,这里就叫它GuiH.ClassLibrary

fce94f9453309207e075d6f66d0246e5.png

默认即可,需要改目标版本时,等创建好再改

367423cdd4872410f03dbfbcf6436a3c.png

项目创建好了

d5ba8016138ff0e94c7cb4874a9390fe.png

随便写个接口方法

namespace GuiH.ClassLibrary
{public class Class1{public static void Test(){Console.WriteLine("Hello Nuget!!!");}}
}

接下来修改工程文件,默认情况是这样的

28ec9b8b2f2765ef4e4e86ad0bb337c6.png
我们添加下面一些配置

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net6.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable><!--以下是我们自己添加的--><!--版本号,重要性不必多说--><Version>1.0.0</Version><!--添加该配置,在编译时进行打包--><GeneratePackageOnBuild>true</GeneratePackageOnBuild><!--添加该配置才会生成注释文件,默认无注释--><GenerateDocumentationFile>true</GenerateDocumentationFile></PropertyGroup></Project>

执行编译命令,根据上面的配置,编译后会自动进行打包

// 该命令在GuiH.ClassLibrary项目根目录下执行
dotnet build -c=Release

cafaf583c7210a9cf77d7edfff12dd63.png
命令行中也提示了 已成功创建包“E:\工作区\GuiH.ClassLibrary\GuiH.ClassLibrary\bin\Release\GuiH.ClassLibrary.1.0.0.nupkg”

GuiH.ClassLibrary.1.0.0.nupkg推送至nuget仓库,可以自己搭建,也可以是微软官方nuget仓库

在www.nuget.org注册一个账号,然后获取apikey

a643775c9c46c7d1a6ff2a9e770c672d.png
7b9d4bb41dc4208d584972491b69da8f.png

详细发布nuget命令参考:dotnet-nuget-push

// $apikey 替换为你的apikey
dotnet nuget push ./bin/Release/GuiH.ClassLibrary.1.0.0.nupkg -k $apikey -s https://api.nuget.org/v3/index.json --skip-duplicate正在将 GuiH.ClassLibrary.1.0.0.nupkg 推送到 'https://www.nuget.org/api/v2/package'...PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/deprecateLicenseUrl.Created https://www.nuget.org/api/v2/package/ 1404 毫秒
已推送包。

搜索发布的包(一般会短暂延迟几分钟才能搜到),在项目中使用(应该创建一个控制台测试,知道就好~)

9001ff84c8d107d08f5ec645445e6713.png
754c3ceb07791a05475d0c3d42b6210c.png

多种目标平台支持

例如兼容framwork4.6.1,修改工程文件如下,注意单词TargetFrameworks的单复数

// 修改前
<TargetFramework>net6.0</TargetFramework>
// 修改后
<TargetFrameworks>net6.0;net461</TargetFrameworks>

或只支持net461

<TargetFrameworks>net461</TargetFrameworks>

CICD

cicd脚本中核心的两条命令就是上述两个,运行环境安装相应的sdk(.net5/.net6)即可。

关于如何多平台兼容的详细内容,下篇文章介绍。

fdf1e9a4374e2152a20aaca751796da2.png

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

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

相关文章

我的世界服务器物品属性,属性 - Minecraft Wiki,最详细的官方我的世界百科

属性(Attributes)是生物和玩家身上的增益/减益特性系统。属性也存在修饰符(Modifiers)中&#xff0c;用于调整属性的强度。属性应用[]当应用到一个物品&#xff0c;一个物品的修饰符将增加或减少以修正相应的属性下面的命令将给最近的玩家一把增加20( 10)点额外伤害的钻石剑&a…

正则表达式(括号)、[中括号]、{大括号}的区别

正则表达式的() [] {}有不同的意思。 () 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。 (\s*)表示连续空格的字符串。 []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。 (0-9) 匹配 0-9′ 本…

分布式和微服务区别_深度解析spring cloud分布式微服务的实现

分布式系统微服务就是原来臃肿的项目拆分为多个模块互不关联。如&#xff1a;按照子服务拆分、数据库、接口&#xff0c;依次往下就更加细粒度&#xff0c;当然运维也就越来越难受了。分布式则是偏向与机器将诺大的系统划分为多个模块部署在不同服务器上。微服务和分布式就是作…

通过Shell开发企业级专业服务启动脚本案例(MySQL)

老男孩教育Linux高端运维班Shell课后必会考试题:企业Shell面试题10&#xff1a;开发企业级MySQL启动脚本说明:MySQL启动命令为&#xff1a;/bin/sh mysqld_safe --pid-file$mysqld_pid_file_path 2>&1 >/dev/null &停止命令逻辑脚本为&#xff1a;mysqld_pidcat …

element vue 上传模板_vue+element 文件上传

一、前言element ui 已经提供了文件上传的组件&#xff0c;直接拿来就能用。具有以下几个特点&#xff1a;限制文件上传的个数&#xff0c;多个文件会发起多个请求。可以设置文件选择后自动上传或者手动触发上传&#xff0c;并且手动触发可以自定义上传逻辑。可以限制文件格式和…

React Native之js调用Android原生使用Callback传递结果给js

如果不清楚js如何调用Android原生,可以先参考我的这篇博客React Native实现js调用安卓原生代码 1 问题 上面的文章只是调用安卓原生显示Toast,但是我们一般会需要调用安卓的代码然后去拿回结果给js,但是我们知道在android层js调用的这个函数返回值必须的void,所以我们需要用到…

ENVI帮助研究人员发现金矿

本文转自&#xff1a;http://www.esrichina-bj.cn/2012/0319/1663.html 遥感影像能让我们实时的获取地理区域的准确信息&#xff0c;这些为很多石油、天然气和矿产的开采提供关键的信息&#xff0c;节约实地测量的成本&#xff0c;提高工作效率。 美国圣路易斯大学的研究人员希…

ajax速度axio速度,[转]Ajax Fetch Axios之间的详细区别以及优缺点

jQuery ajax12345678$.ajax({type: POST,url: url,data: data,dataType: dataType,success: function (){},error: function (){}})优缺点&#xff1a;本身是针对mvc模式的编程&#xff0c;不符合现在mvvm的浪潮基于原生的XHR开发&#xff0c;XHR本身的架构不清晰&#xff0c;已…

C# 使用TCP创建HTTP客户程序

首先&#xff0c;创建一个控制台应用程序(包)&#xff0c;向 Web 服务器发送一个 HTTP 请求。以前用 HttpClient 类实现了这个功能&#xff0c;但使用 TcpClient 类需要深入 HTTP 协议。HttpClientUsingTcp 示例代码使用了以下名称空间:System System.IO System.Net.Sockets …

Git之submodule使用总结

Git Submodule 可许可一个git仓库&#xff0c;作为另一个git仓库的子目录&#xff0c;保持父项目和子项目相互独立 1 添加仓库 git submodule add <仓库地址> <本地路径> 在父仓库根目录增加了.gitmodule文件 // 添加submodule字段 [submodule "submodule1&…

通读AFN①--从创建manager到数据解析完毕

流程梳理 今天开始会写几篇关于AFN源码解读的一些Blog&#xff0c;首先要梳理一下AFN的整体结构(主要是讨论2.x版本的Session访问模块)&#xff1a; 我们先看看我们最常用的一段代码&#xff1a; AFHTTPSessionManager *manager [AFHTTPSessionManager manager]; [manager GET…

学前教育试题库及答案_最新《学前教育学》专科-试题库及答案资料

精品文档精品文档学前教育学专科题库及答案一、单项选择题&#xff1a;(从下列各题备选答案中选出最适合的一个答案。共120题&#xff0c;每题1分)1——5DACBB 6——10DACDB 11——15ABDAC 16——20 BCDDC 21——25BBBCC26——30DCCAD 31——35DBBAB 36——40ACA…

python画4维图_用Python 画个六维图,涨姿势了

关注后你就是我的人了 我们的大脑通常最多能感知三维空间&#xff0c;超过三维就很难想象了。尽管是三维&#xff0c;理解起来也很费劲&#xff0c;所以大多数情况下都使用二维平面。来自维基百科 不过&#xff0c;我们仍然可以绘制出多维空间&#xff0c;今天就来用 Python 的…

[Windows]_[0基础]_[Release程序的崩溃报告minidump解决方式]

场景:1. Release的程序崩溃时&#xff0c;崩溃报告能够让开发者查明代码哪里出了问题&#xff0c;用处大大的。2. 仅仅实用VS的编译器才支持&#xff0c;所以MinGW就无缘了。3. 使用了未处理异常过滤处理函数.4. 生成的.dmp文件用zlib库压缩, 用到下面的ZipHelper类&#xff0c…

高考地理背熟这些知识可以拿80%的分数(1)

一、地理特征的描述 (一).区域自然地理特征的描述: 1、分析区域自然地理特征: 从地形、气候、水文、植被、河流、土壤、自然资源、自然灾害、自然(生态)环境等几方面入手。

CF Theatre Square

Theatre Square time limit per test2 secondsmemory limit per test64 megabytesinputstandard inputoutputstandard outputTheatre Square in the capital city of Berland has a rectangular shape with the size n  m meters. On the occasion of the citys anniversary,…

迅捷路由器 服务器无响应,如果路由器重启还是上不了网 几招搞定

如果网速很慢重启了路由器之后结果还是慢&#xff0c;而且甚至上不了网了那该怎么办。如果有这种情况原因其实有很多很多的可能&#xff0c;需要逐个排查&#xff0c;首先需要进入192.168.1.1路由器的管理设置界面&#xff0c;查看路由器的运行状态。路由器设置、路由器没有成功…

Azure DevOps 中 Dapr项目自动部署流程实践

注&#xff1a;本文中主要讨论 .NET6.0项目在 k8s 中运行的 Dapr 的持续集成流程, 但实际上不是Dapr的项目部署到K8s也是相同流程&#xff0c;只是k8s的yaml配置文件有所不同流程选择基于 Dapr 的项目持续集成包含以下流程编译并打包项目构建 Dockerfile,并推送镜像push image至…

matlab求kcf算法响应图_Kernelized Correlation Filters(KCF)算法

目前在online visual tracking这个领域&#xff0c;已经涌现出很多的跟踪算法&#xff0c;比较知名如TLD&#xff0c;Struck&#xff0c;OAB&#xff0c;CT等等。但是能做到非常快速而且效果还不错的相对就较少了&#xff0c;好多算法都是刚刚能实时&#xff0c;而且还是在图像…

React Native之js同步调用安卓原生方法@ReactMethod(isBlockingSynchronousMethod = true)

1 问题 之前的代码js调用安卓原生都是用的异步方法,比如callback, promiss,异步的话,我们一般是在安卓原生有耗时操作,才用异步,如果我要离开返回,就需要js调用安卓同步方法 利用callback实现js调用原生可以参考我的这篇博客 React Native实现js调用安卓原生代码 React Nat…