前几天微软收购npm的新闻对于软粉来收很是振奋。微软收购npm很可能是为了加强Github Packages。目前Github,Typescript,VSCode,npm这些开源社区的重磅工具全部都在微软旗下,显示出了微软对开源的态度,微软已经不是以前那个封闭的微软。Github推出Github Packages功能有一段时间了,一直没使用过,今天有空打算折腾一下,体验一下。

什么是Github Packages

Github Packages是一个包承载服务,它完全跟Github集成。Github Packages使你的源码和包在同一个地方进行统一的管理,使你可以集中的在Github上开发跟发布。你可以发布公共包(public packages)跟所有人分享,也可以发布私有包(private packages)提供给个人或者组织使用。以上是对官方文档的简单翻译。说简单点就是以前你代码是在Github,但是包可能是在npm,maven或者nuget上,现在你在Github上传代码后还可以直接把包也上传到Github,方便统一管理,发布。

在Github Packages上发布包

下面让我们开始尝试使用Github Packages发布一个包吧。

在Github上新建一个仓库HiGithubPackage

新建一个公共的仓库命名HiGithubPackage

在Github上申请Access Token

在Github上申请一个新的Access Token。这个Token是用来上传Package的凭证,后面需要配置。登录Github后点击个人头像-Settings-Developer settings-Personal access tokens-Generate new token,然后勾选packages的权限后点Generate token按钮生成token。复制好这个token,不要丢了,因为你关闭这个页面后,后面就再也找不回这个token了。

新建一个.net Core项目HiGithubPackage

使用Visual studio新建一个core标准库项目。新建一个类,这个类里只有一个静态方法Hi,调用的话会输出一行Hi GithubPackage ~。我打算把这个库上传到Github Packages上去。

   public class GithubPackage
{
public static void Hi ()
{
Console.WriteLine("Hi GithubPackage ~");
}
}

顺手把代码也push到github上去吧。

git push -u origin master

新建一个nuget.config文件

在项目文件夹下新建一个nuget.config文件,并且配置它。



OWNER填写你Github的用户名

UserName填写你Github的用户名

Token填写上面申请的access token

以下是我的配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="github" value="https://nuget.pkg.github.com/kklldog/index.json" />
</packageSources>
<packageSourceCredentials>
<github>
<add key="Username" value="kklldog" />
<add key="ClearTextPassword" value="xxx" />
</github>
</packageSourceCredentials>
</configuration>

修改包信息并打包

在Visual studio上右键项目,选择编辑项目文件。我们在csproj文件下编辑包信息。其中包含包的id,版本,授权等,比较简单一看就明白了。

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

  <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageId>HiGithubPackage</PackageId>
<Version>1.0.0</Version>
<Authors>minjie.zhou</Authors>
<Description>Test upload to github packages</Description>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryUrl>https://github.com/kklldog/HiGithubPackage</RepositoryUrl>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup> </Project>

修改完后ctrl-b一下进行一次编译。编译完后在bin\debug下会生成一个.nupkg的包文件。

上传包到Github packages

使用dotnet cli进行上传

dotnet nuget push "bin/debug/HiGithubPackage1.0.0.nupkg" --source "github"



这里可能要多试几次,有的时候会提示401的错误。

上传成功后回到Github网站刷新下看看HiGithubPackage仓库。可以看到我们的包已经出现在上面。

新建一个.net Core控制台项目HiGithubPackageTest

新建另外一个core项目,这个项目要引用我们上传成功的包并使用它。

使用dotnet cli来安装这个包

dotnet add HiGithubPackageTest package HiGithubPackage --version 1.0.0

这里也要多试几次,同样会出现401的问题。最后我挂上FQ工具才安装成功。



修改Program类来使用这个包。

  class Program
{
static void Main(string[] args)
{
HiGithubPackage.GithubPackage.Hi(); Console.ReadLine();
}
}

运行一下成功的输入了“Hi GithubPackage ~”,说明成功的引用了HiGithubPackage这个包。

一些小问题

通过以上一些了操作我们演示了如果上传一个包到Github Packages服务。演示了如果下载一个包到项目并使用它。总体体验其实一般般,个人觉得有几个小问题:

  1. 上传的包并不会出现在nuget.org官方源里面。不出现在官方源里面的话其他项目要使用这个包就会相当麻烦。毕竟大家都喜欢使用nuget管理程序来安装包,使用cli的话会比较麻烦。
  2. 不知道是不是墙的问题,上传包跟安装包都碰到了比较严重的网络问题,如果没有FQ工具的话会很麻烦,当然这不是Github的锅。

使用Github Packages功能上传nuget包到Github的更多相关文章

  1. 为 .net 生态贡献力量——制作并上传 nuget 包(内有独家彩蛋)

    前言 nuget 是 .net 的常用包管理器,目前已经内置到 Visual Studio 2012 以后的版本.大多数 .net 包都托管在 nuget.org,包括 .net core 框架基础包 ...

  2. 【原创】使用批处理脚本自动生成并上传NuGet包

    Hello 大家好,我是TANZAME,我们又见面了. NuGet 是什么这里就不再重复啰嗦,园子里一搜一大把.今天要跟大家分享的是,在日常开发过程中如何统一管理我们的包,如何通过批处理脚本生成包并自 ...

  3. 手把手教你 通过 NuGet.Server 包 搭建nuget服务器,并使用桌面工具上传 nuget 包,免命令行

    新建web项目 工具:VS2013 版本:.Net Framework 4.6,低版本也行,不过要找到对应版本的Nuget.Server 装了NuGet客户端(百度如何安装) WebForm或MVC都 ...

  4. git入门学习(一):github for windows上传本地项目到github

    Git是目前最先进的分布式版本控制系统,作为一个程序员,我们需要掌握其用法.Github发布了Github for Windows 则大大降低了学习成本和使用难度,他甚至比SVN都简单. 一.首先在g ...

  5. 半小时学会上传本地项目到github

    半小时学会上传本地项目到github 闲着无聊写给那些正在学习怎么上传本地项目到github的同学. 开始学习 一.创建github账号 好吧,这步多余了. 二.创建个人仓库 三.配置SSH keys ...

  6. win10 uwp 上传Nuget 让别人用我们的库

    Nuget 我们的开发经常使用别人的dll,那么我们需要每次都从网上下载,然后复制到我们的项目, 而不知道我们的dll是否安全? 当我们的库更新的时候,我们又需要从网上搜索,这样不好,于是我们就用Nu ...

  7. github入门到上传本地项目【网上资源整合】

    [在原文章的基础上,修改了描述的不够详细的地方,对内容进行了扩充,整合了网上的一些资料] [内容主要来自http://www.cnblogs.com/specter45/p/github.html#g ...

  8. github入门到上传本地项目

    GitHub是基于git实现的代码托管.git是目前最好用的版本控制系统了,非常受欢迎,比之svn更好. GitHub可以免费使用,并且快速稳定.即使是付费帐户,每个月不超过10美刀的费用也非常便宜. ...

  9. 【github&&git】2、github入门到上传本地项目

    [在原文章的基础上,修改了描述的不够详细的地方,对内容进行了扩充,整合了网上的一些资料] [内容主要来自http://www.cnblogs.com/specter45/p/github.html#g ...

随机推荐

  1. ZOJ-1163-The Staircases

    dp[i][j]表示i个砖头构成的最高台阶不高于j的楼梯数目 Accepted 1163 C++11 0 2280 #include "bits/stdc++.h" using n ...

  2. 吴裕雄--天生自然 R语言开发学习:导入数据

    2.3.6 导入 SPSS 数据 IBM SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc 包中的spss.get()函数.函数spss.get() ...

  3. [洛谷P3384] [模板] 树链剖分

    题目传送门 显然是一道模板题. 然而索引出现了错误,狂wa不止. 感谢神犇Dr_J指正.%%%orz. 建线段树的时候,第44行. 把sum[p]=bv[pos[l]]%mod;打成了sum[p]=b ...

  4. phpStrom安装PHP_CodeSniffer检查代码规范

    为什么使用PHP_CodeSniffer 一个开发团队统一的编码风格,有助于他人对代码的理解和维护,对于大项目来说尤其重要. PHP_CodeSniffer是PEAR中的一个用PHP5写的用来检查嗅探 ...

  5. ranche2.0-CN

    遵循以下两步,快速运行rancher2.0 Step1:准备一台linux主机 准备一台64位Linux主机(推荐centos7.5+),至少4GB内存.安装Kubernetes支持的Docker-c ...

  6. 吴裕雄--天生自然 PHP开发学习:PhpStorm的配置与安装

    下载安装包

  7. 监控Linux系统所选的服务所占进程内存占用

    [代码] #!/bin/bash #程序功能描述: # 监控系统所选的服务所占进程内存占用 #作者:孤舟点点 #版本:1.0 #创建时间:-- :: PATH=/bin:/sbin:/usr/bin: ...

  8. windows的各种扩展名详解

    Windows系统文件按照不同的格式和用途分很多种类,为便于管理和识别,在对文件命名时,是以扩展名加以区分的,即文件名格式为: 主文件名.扩展名.这样就可以根据文件的扩展名,判定文件的种类,从而知道其 ...

  9. 用Express 4和 MongoDB打造Todo List

    本篇文章主要參考自DreamersLab - 用Express和MongoDB寫一個todo list.原文的教學內容是使用Express 3.x版,在這邊做簡單Express 4.12.1的todo ...

  10. B站实战第三天

    B站实战第三天 用了两天多的时间才把B站页面的头部写完,今天来写头部下面的导航栏部分和轮播图一些模块. 因为还没学js,轮播图部分用swiper来实现. 今天首先复习的知识点是弹性盒模型. 弹性盒模型 ...