1. 程式人生 > >使用Github Packages功能上傳nuget包到Github

使用Github Packages功能上傳nuget包到Github

前幾天微軟收購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 ![](https://s1.ax1x.com/2020/03/20/86QtBD.png) ### 在Github上申請Access Token 在Github上申請一個新的Access Token。這個Token是用來上傳Package的憑證,後面需要配置。登入Github後點擊個人頭像-Settings-Developer settings-Personal access tokens-Generate new token,然後勾選packages的許可權後點Generate token按鈕生成token。複製好這個token,不要丟了,因為你關閉這個頁面後,後面就再也找不回這個token了。 ![](https://s1.ax1x.com/2020/03/20/86QB9I.png) ### 新建一個.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檔案,並且配置它。 ![](https://s1.ax1x.com/2020/03/20/86lA5d.png) OWNER填寫你Github的使用者名稱 UserName填寫你Github的使用者名稱 Token填寫上面申請的access token 以下是我的配置 ``` ``` ### 修改包資訊並打包 在Visual studio上右鍵專案,選擇編輯專案檔案。我們在csproj檔案下編輯包資訊。其中包含包的id,版本,授權等,比較簡單一看就明白了。 ``` ``` 修改完後**ctrl-b**一下進行一次編譯。編譯完後在bin\debug下會生成一個.nupkg的包檔案。 ![](https://s1.ax1x.com/2020/03/20/861kLT.png) ### 上傳包到Github packages 使用dotnet cli進行上傳 ``` dotnet nuget push "bin/debug/HiGithubPackage1.0.0.nupkg" --source "github" ``` ![](https://s1.ax1x.com/2020/03/20/86QGjK.png) 這裡可能要多試幾次,有的時候會提示401的錯誤。 上傳成功後回到Github網站重新整理下看看HiGithubPackage倉庫。可以看到我們的包已經出現在上面。 ### 新建一個.net Core控制檯專案HiGithubPackageTest 新建另外一個core專案,這個專案要引用我們上傳成功的包並使用它。 使用dotnet cli來安裝這個包 ``` dotnet add HiGithubPackageTest package HiGithubPackage --version 1.0.0 ``` 這裡也要多試幾次,同樣會出現401的問題。最後我掛上FQ工具才安裝成功。 ![](https://s1.ax1x.com/2020/03/20/86QYnO.png) 修改Program類來使用這個包。 ``` class Program { static void Main(string[] args) { HiGithubPackage.GithubPackage.Hi(); Console.ReadLine(); } } ``` 執行一下成功的輸入了“Hi GithubPackage ~”,說明成功的引用了HiGithubPackage這個包。 ![](https://s1.ax1x.com/2020/03/20/86QQhR.md.png) ### 一些小問題 通過以上一些了操作我們演示瞭如果上傳一個包到Github Packages服務。演示瞭如果下載一個包到專案並使用它。總體體驗其實一般般,但是個人覺得有幾個小問題: 1. 上傳的包並不會出現在nuget.org官方源裡面。不出現在官方源裡面的話其他專案要使用這個包就會相當麻煩。畢竟大家都喜歡使用nuget管理程式來安裝包,使用cli的話會比較麻煩。 2. 不知道是不是牆的問題,上傳包跟安裝包都碰到了比較嚴重的網路問題,如果沒有FQ工具的話會很麻煩,當然這不是Github