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

首先新建项目

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

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

项目创建好了

随便写个接口方法

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

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



我们添加下面一些配置

<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



命令行中也提示了 已成功创建包“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



详细发布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 毫秒
已推送包。

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



多种目标平台支持

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

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

或只支持net461

<TargetFrameworks>net461</TargetFrameworks>

CICD

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

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

发布nuget包的正确姿势---cicd自动打包发布nuget包的更多相关文章

  1. Nuget 多平台多目标快速自动打包

    构建现代的 .Net 应用离不开 Nuget 的支持,而快速打包 Nuget 成了提高生产率的有效方法. 1. 前置条件 为了实现 Nuget 的快速打包,我们需要先解决一些前置依赖,无论是 .Net ...

  2. 剖析和解决Python中网络粘包的正确姿势

    目录 1.粘包及其成因 1.1.粘包产生 1.2.粘包产生的原因 2.尝试解决粘包 2.1.指定数据包的长度 2.2.固定数据包的长度 2.3.用函数实现多次调用发送数据 3.解决粘包问题的正确姿势 ...

  3. SummerVocation_Learning--java的自动打包与解包

    Auto Boxing: 自动将基础类型转换成对象(JDK1.5之后支持) Auto UnBoxing:自动将对象转换成基础类型 如 Map中的put方法,如果要传入键值对<a,1>,&l ...

  4. 使用release自动打包发布正式版详细教程

    昨天写了个release插件的版本管理,今天就在自动发布过程中遇到了许多坑,只能再写一篇自动发布详细教程,纪念我那昨日逝去的青春 (╥ _ ╥`) release正常打包发布流程按照如下几个阶段: C ...

  5. windows右键菜单自动打包发布nuget,没有CI/CD一样方便!

    构建现代的 .Net 应用离不开 Nuget 的支持,而快速打包 Nuget 成了提高生产率的有效方法.没有CI/CD?来试试使用windows右键菜单吧 先看右键效果图 有时候我们可能没有CI/CD ...

  6. python爬虫——论抓包的正确姿势和学好Javascript的重要性(1)

    没事想爬下数据,就入了scrapy坑,跟着https://zhuanlan.zhihu.com/data-factory这篇教程走,中间被小数量的网站坑过,不过还是写出了爬虫~~ 切糕王子:毫无防御, ...

  7. .NetCore下利用Jenkins如何将程序自动打包发布到Docker容器中运行

    说道这一块纠结了我两天时间,感觉真的很心累,Jenkins的安装就不多说了 这里我们最好直接安装到宿主机上,应该pull到的jenkins版本是2.6的,里面很多都不支持,我自己试了在容器中安装的情况 ...

  8. mac下git+maven+jenkins自动打包发布

    随着springboot+springcloud(dubbo)越来越多人使用,流行的微服务的概念越来越深入人心.分布式部署越来越复杂,给手动发布带来很大工作量.为了方便前期测试和后期线上部署更新,可使 ...

  9. 使用Web Deploy自动打包发布

    在内部测试阶段,经常改一点小东西需要更新给测试继续测试.然后就需要频繁的找到对应更改的视图/JS文件,或者是编译的dll文件,再打开测试服务器找到对应站点替换进去,整套流程下来就非常的繁琐费时. 使用 ...

随机推荐

  1. MySQL知识补充(表字段操作、视图、触发器、事物、存储过程、内置函数、流程控制、索引、慢查询)

    今日内容概要 表字段操作补充(掌握) 视图(了解) 触发器(了解) 事务(掌握) 存储过程(了解) 内置函数(了解) 流程控制(了解) 索引(熟悉) 内容详细 1.表字段操作补充 # 1.添加表字段 ...

  2. 随手用Java写的bilibili缓存视频转换器(合成分离的视频和音频)

    使用java随手写成,有需要可以自行修改. 项目使用到了fastjson,可以自行替换成其他json解析工具. 写这个的原因是因为下载到的其他工具弄出来的视频标题过长(应该取entry.json中的s ...

  3. -std=c++11 编译器设置

    range-based 'for' loops are not allowed in C++98 mode

  4. java 打包部署(一) windows

  5. SpringAOP--aop使用

    SpringAOP使用方式 切点表达式 常用的符号: *:匹配任何数量字符: ..:匹配任何数量字符的重复,如在类型模式中匹配任何数量子包:而在方法参数模式中匹配任何数量参数. +:匹配指定类型的子类 ...

  6. 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动 的区别在哪里?

    Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联 集合对象时,可以根据对象关系模型直接获取,所以它是全自动的.而 Mybatis 在查询关联对象或关联集 ...

  7. django 三件套(render,redirect,HttpResponse)

    Django基础必备三件套**: HttpResponse 内部传入一个字符串参数,返回给浏览器. from django.shortcuts import HttpResponse def inde ...

  8. 学习git(一)

    一.自动化运维 1.网络层(接入层.汇聚层.核心层): 1 LB+HA(L4.L7): 2 服务层(reverse proxy cache.应用层.web层.SOA层.分布式层.DAL): 3 数据层 ...

  9. 002.MEMS应用在开关电源上,实现大功率超小型化

    设计任务书 1.有关MEMS还有待具体了解 2.有关开关电源的目前难题也需要了解

  10. CSS入门指南-4:页面布局

    这是<CSS设计指南>的读书笔记,用于加深学习效果. display 属性 display是 CSS 中最重要的用于控制布局的属性.每个元素都有一个默认的 display 值.对于大多数元 ...