前幾天微軟收購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://www.cnblogs.com/kklldog/p/"https://nuget.pkg.github.com/kklldog/index.json" />
修改包資訊并打包
在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服務,演示了如果下載一個包到專案并使用它,總體體驗其實一般般,個人覺得有幾個小問題:
- 上傳的包并不會出現在nuget.org官方源里面,不出現在官方源里面的話其他專案要使用這個包就會相當麻煩,畢竟大家都喜歡使用nuget管理程式來安裝包,使用cli的話會比較麻煩,
- 不知道是不是墻的問題,上傳包跟安裝包都碰到了比較嚴重的網路問題,如果沒有FQ工具的話會很麻煩,當然這不是Github的鍋,
關注我的公眾號一起玩轉技術

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/54800.html
標籤:.NET Core
