1. 程式人生 > >Nuget 通過 dotnet 命令列釋出

Nuget 通過 dotnet 命令列釋出

在開發完成一個好用的輪子就想將這個輪子釋出到 nuget 讓其他小夥伴可以來使用,但是 nuget.org 的登陸速度太慢,本文介紹一個命令列釋出的方法,通過命令列釋出的方法可以配合 Jenkins 自動打包

本文不會告訴大家如何去製作一個 nuget 庫,只是在大家已經打出來 nuget 之後如何將這個輪子釋出到 nuget ,本文用 nuget.org 作為例子,如果是自己搭建的,那麼我也不知道自己搭建的會做成什麼

首先開啟 nuget.org 進行登陸,就是因為登陸 nuget 實在太慢我才去學如何通過命令列的方法釋出

在這裡插入圖片描述

登陸之後,可以在右上角看到自己的賬號,點選一下可以看到下面介面,這時點選一個 Api key 因為在使用命令列釋出的時候需要一個祕鑰,通過上面的介面就可以建立祕鑰

在這裡插入圖片描述

在 Api Key 介面可以看到 Create 這個按鈕,沒錯,這是一個按鈕

在這裡插入圖片描述

點選一下就可以建立一個 key 了,建立一個 key 可以給 key 不同的功能,具體請看下圖

在這裡插入圖片描述

如果指定了可以修改版本的許可權,可以設定有哪些輪子的版本號可以被這個 key 修改,請看下面

在這裡插入圖片描述

設定完成就可以點選 Create 了

在這裡插入圖片描述

建立之後需要複製這個 Key 的 序列,先將這個序列儲存到文字,在之後會用到。注意,一個key只能在網頁沒關閉之前複製一次

本文使用的是設定了 MVVM 框架的三個輪子的更新許可權,所以下面的例子就是更新一個輪子的版本

我通過 VisualStudio 編譯出來不同的輪子的 nuget 請看圖

在這裡插入圖片描述

然後我可以在位址列輸入 cmd 啟動命令列,為什麼需要在位址列輸入?原因是這樣輸入開啟 cmd 就可以自動設定工作路徑,請看下圖,通過 cmd 開啟的就是我需要的工作路徑

在這裡插入圖片描述

這時可以通過下面的命令釋出對應的 nuget 到 nuget.org 網站

dotnet nuget push xx.nupkg -k 剛才複製的key -s https://api.nuget.org/v3/index.json

如我釋出 lindexi.MVVM.Framework.2.2.5.symbols.nupkg 可以使用下面程式碼

dotnet nuget push lindexi.MVVM.Framework.2.2.5.symbols.nupkg -k oy2fvszjpukd6lm2vaqav5gcx6xcfuaencyx5x2ppab42e -s https://api.nuget.org/v3/index.json

可以看到輸出

info : Pushing lindexi.MVVM.Framework.2.2.5.symbols.nupkg to 'https://www.nuget.org/api/v2/package'...
info :   PUT https://www.nuget.org/api/v2/package/
info :   Created https://www.nuget.org/api/v2/package/ 12720ms
info : Your package was pushed.

現在就成功釋出了,那麼用命令列除了減少在 nuget.org 登陸的時間之外,還可以用它做自動上傳

可以通過這個方式在每次建立的時候只在資料夾儲存一個 nuget 這樣就可以通過命令列批處理的方式釋出到 nuget 因為剛才的命令是可以支援任意的名字

上傳某個資料夾內的 nuget 有一個要求就是這個資料夾內只有一個 nuget 不能有多個,而且上傳的 nuget 的版本是不存在的,也就是不能多次上傳相同版本號的 nuget 如果符合上面的條件就可以通過批處理的方式上傳

在相同的資料夾建立一個 nuget.bat 檔案,在這個檔案輸入下面程式碼

dotnet nuget push *.nupkg -k 剛才複製的key -s https://api.nuget.org/v3/index.json

這樣在編譯之後呼叫這個批處理就可以將資料夾內的 nuget 上傳,通過這個方式和 Jenkins 自動打包就可以自動釋出 nuget 而且這個方式可以防止使用者自己上傳過程因為編譯了不對的分支讓其他使用者以為自己寫出坑

How to Publish a NuGet Package

dotnet nuget push command - .NET Core CLI

點選檢視課件

在這裡插入圖片描述

我搭建了自己的部落格 https://lindexi.gitee.io/ 歡迎大家訪問,裡面有很多新的部落格。只有在我看到部落格寫成熟之後才會放在csdn或部落格園,但是一旦釋出了就不再更新

如果在部落格看到有任何不懂的,歡迎交流,我搭建了 dotnet 職業技術學院 歡迎大家加入

知識共享許可協議
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含連結:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我聯絡