如何将自己的类库,自动打包并自动发布到Nuget?

1. 项目csproject属性修改

新建一个项目GitToNugetPackageTest

不用添加任何类,我们修改csproject属性。

替换为以下模板内容后,并修改以下节点值:

  • TargetFrameworks 依赖的框架版本,比如net452;netcoreapp3.1,多个版本以分号隔开Version
  • Version 版本号,每次需要升级Nuget版本时,可以修改这个提交一下就行了。
  • RespositoryUrl、PackageProjectUrl替换成自己的项目地址和仓库地址
 <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<TargetFrameworks>net45</TargetFrameworks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>1.0.0</Version>
<Authors>Kybs0</Authors>
<UseWpf>True</UseWpf>
<UseWindowsForms>true</UseWindowsForms>
<RepositoryUrl>https://github.com/Kybs0/GitToNugetPackageTest.git</RepositoryUrl>
<PackageProjectUrl>https://github.com/Kybs0/GitToNugetPackageTest</PackageProjectUrl>
<PackageIconUrl></PackageIconUrl>
<RepositoryType>git</RepositoryType>
<Description>测试:Git自动打包,并推到Nuget源。</Description>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<None Remove="GitToNugetPackageTest.csproj.DotSettings" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
</Project>

2. 生成并上传Nuget包

在第1步的基础上,鼠标右击项目,点击打包

在Debug下可以查看到本地生成的nuget源包

将此源包上传至https://www.nuget.org/packages/manage/upload

上传成功后,在头像弹框内点击API KEYS,然后生成一个新的API KEY(关联上GitToNugetPackageTest)

生成成功后,在API Keys列表找到新的Key,点击复制(复制以后保存在你的记事本里,第4步需要)。

注:注意保留API KEY!刷新页面就没有了,除非点击重新生成,但是重新生成的Key就是另一个Key值了。

所以为了减少麻烦,建议一个项目用一个API KEY。

3.新建Action,添加打包流程

在github上新建个repository,并将项目推送上去:https://github.com/Kybs0/GitToNugetPackageTest

然后在Action下新建一个workflow

选.NetCore模板,然后修改为以下内容:

 name: CI

 on:
push:
branches: [ master ]
pull_request:
branches: [ master ] jobs:
build:
runs-on: windows-latest # Steps represent a sequence of tasks that will be executed as part of the job
steps:
# 1.Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# 2.runtime environment
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.100
# 3.build
- name: Build with dotnet
run: dotnet build --configuration Release
# 4.Install Nuget
- name: Install Nuget
run: |
$sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$targetNugetExe = "nuget.exe"
Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe
# 5. Push package
- name: Push generated package to GitHub registry
run: |
.\nuget push .\GitToNugetPackageTest\bin\Release\*.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NugetKey }} -NoSymbols

以上对master分支打包,并推送到Nuget。

需要修改的是第5步,如果workflow的yml格式文件是在解决方案下的,需要添加“.\GitToNugetPackageTest\bin\Release\*.nupkg”相对路径,改个名称就好。

4. GitHub关联相应的Nuget源地址

在github项目所在的设置-Secrets页面,添加第二步从nuget生成的API Key。

添加后,尝试修改csproject中的版本号为1.0.1,然后等待github打包,打包完成后,nuget包的版本就更新成1.0.1了:https://www.nuget.org/packages/GitToNugetPackageTest/

VS搜索nuget包:

以上适合小白浏览的经验步骤~

详细的打包原理及进阶,可以看俩个MVP大佬同事的博客

dotnet 配合 GitHub 的 Action 做自动推 Tag 时打包 NuGet 包

从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目)

Github自动打包并推送Nuget版本的更多相关文章

  1. CCNET+ProGet+Windows Batch搭建全自动的内部包打包和推送及管理平台

    所要用的工具: 1.CCNET(用于检测SVN有改动提交时自动构建,并运行nuget的自动打包和推送批处理) 2.ProGet(目前见到最好用的nuget内部包管理平台) 3.Windows Batc ...

  2. 使用 Cake 推送 NuGet 包到 AzureDevops 的 Artifacts 上

    前言 大家好,我最近在想如何提交代码的时候自动的打包 NuGet 然后发布到 AzureDevOps 中的 Artifacts,在这个过程中踩了很多坑,也走了很多弯路,所以这次篇文章就是将我探索的结果 ...

  3. Git for Windows之推送本地版本库到远程仓库

    Git for Windows之基础环境搭建与基础操作中介绍了Git基本环境的构建与基本的操作.生成了一个本地git版本库,本文将介绍如何将这个版本库推送到远程仓库(码云,github也可以). 1. ...

  4. Huginn实现自动通过slack推送豆瓣高分电影

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...

  5. .net平台借助第三方推送服务在推送Android,IOS消息(极光推送_V3版本)最新

    最近刚从极光推送官网上看到V2版本要停用,不得不有重新写V3版本的.这里用到了 HTTP Basic Authentication http://www.cnblogs.com/pingming/p/ ...

  6. git-------基础知识(本地推送项目版本---github上)

    创建Git仓库 一:初始化版本库:-git init 二:添加文件到缓存区:-git add  --添加所有文件 是:加个点-列:git add . 三:查看仓库状态:-git status 四:添加 ...

  7. github拉取和推送

    登入github 创建一个开源项目 然后打开安装好的git 首先进入一个指定的文件夹 例如: 1)E:\>cd miaov/testGit 回车 进入E盘的testGit文件夹 2)E:\mia ...

  8. 通过 Github Action 实现定时推送天气预报

    偶然间,看到 GitHub Actions 教程:定时发送天气邮件 - 阮一峰的网络日志 这篇文章,没错,这个正好能打发自己的折腾之心,也能通过代码给生活引入一些变化. 还是在这里简单记录一下实现过程 ...

  9. 极光API推送 (v3 版本)

    Push API v3 这是 Push API 最近的版本. 相比于 API v2 版本,v3 版本的改进为: 完全基于 https,不再提供 http 访问: 使用 HTTP Basic Authe ...

随机推荐

  1. C++ 模板(template) 的定义

    定义: 模板(template)是实现代码重用机制的一种工具,它可以实现类型参数化,把类型定义为参数(模板元编程),从而实现了真正的代码可重用性. 模板是用来批量生成功能和形式都几乎相同的代码的.编译 ...

  2. 《C程序设计语言》 练习1-21

    问题描述 编写程序entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变.假设制表符终止位的位置与练习1 - 20的detab程序的情况相同.当使用一个制表符或者一个空格都可以到 ...

  3. SVN 应用

    1.从服务器上down 资料 在电脑上安装SVN客户端 在电脑本地创建个文件夹作为版本库 进入 xfssvn 文件夹右击鼠标选择 SVN Checkout 或 SVN Update 输入服务器中配置好 ...

  4. Java——多线程超详细总结

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.线程概述 几乎所 ...

  5. Coursera课程笔记----计算导论与C语言基础----Week 10

    C程序中的数组(Week 10) 一维数组 数组的定义 类型 数组名[常量表达式] int sheep[10] 定义数组时,[]内必须为常量表达式 可以用const int 可以在main函数前,#d ...

  6. Day_09【常用API】扩展案例6_将用户给定的字符串首个字符大写,并分别加上"set"和"get"输出

    定义如下方法public static String getPropertyGetMethodName(String property) (1)该方法的参数为String类型,表示用户给定的成员变量的 ...

  7. Day_12【集合】扩展案例2_键盘录入一个字符串,对其进行去重,并将去重后的字符串组成新数组

    需求分析:键盘读取一行输入,去掉其中重复字符, 打印出不同的那些字符 思路: 1.键盘录入字符串 2.遍历字符串,将每个字符存储到集合中 3.将集合中重复的字符去掉 4.创建新集合,遍历老集合,获取老 ...

  8. Linux下ffmpeg交叉编译

    1 获取源代码 git clone -b "branch" https://git.ffmpeg.org/ffmpeg.git "branch" 可以是以下的m ...

  9. ApplicationInsights迁移国内躺的坑

    由于之前有段时间访问国际版的Application Insights实在是慢,而且又不是每个人都有梯子,然后国内版大概在去年(2019)六七月左右已经上线,想着也有一段时日了,要么就迁了吧. 然后实际 ...

  10. java项目部署Linux服务器几种启动方式总结经验

    一:两种部署包: 部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包还是ja ...