圖解使用NuGet打包併發布至ProGet?

Tags: 步驟, 概念,

本篇經驗先介紹NuGet和ProGet的概念,然後介紹如何使用NuGet打包併發布至ProGet的步驟,希望對大家有所幫助!

基本概念

NuGet :

NuGet是一個為大家所熟知的Visual Studio擴充套件,通過這個擴充套件,開發人員可以非常方便地在Visual Studio中安裝或更新專案中所需要的第三方元件,同時也可以通過NuGet來安裝一些Visual Studio的外掛等。作為一名開發人員,您可能也會開發一些公共元件以供他人使用,本文將一步步介紹如何以最簡單的方式將自己所開發的類庫包釋出到nuget上,以供更多的人使用。

ProGet:

非常優秀的庫建立伺服器,用於放置packages。支援nuget命令列上傳。其下載方式已經不用像站長大人[2]那麼繁瑣了,本身已自帶推薦安裝方式,一步一步去安裝即可。安裝完如下圖所示:

圖解使用NuGet打包併發布至ProGet

NuGet.exe生成包包並上傳至ProGet步驟

獲取APIKey

去NuGet官網上註冊一個新的賬號,然後在My Account頁面,獲取一個API Key。 別忘了這個Apikey不然以後很麻煩的[4]。

作用詳解:因為包包需要釋出並共享,NuGet.exe專門提供了一條釋出命令。在釋出之前,需要在NuGet上建立一個賬號,然後得到ApiKey。在庫上載包包之前,該命令將驗證庫的API金鑰。

下載NuGet.exe

NuGet.exe為NuGet專用的命令列工具,去官網下載,官網首頁的下載包並一定適合你,最好在Download中選擇相應版本。下載完後還必須將其放在環境變數中。方法:右鍵“計算機”,“屬性”,“高階屬性設定”,“高階”中的“環境變數" , ”Path“,”編輯“,將NuGet.exe的路徑放進去,如下圖所示:

圖解使用NuGet打包併發布至ProGet

用命令列設定ApiKey:

nuget setApiKey 你的key值,使其儲存在安全的位置,如下圖所示:

圖解使用NuGet打包併發布至ProGet

準備好自己的類庫專案

程式包大多數情況下僅包含一個程式集。這裡主要針對.csproj或者.vbproj檔案建立程式包。

務必開啟AssemblyInfo.cs檔案以更新程式集的元資料。

在AssemblyInfo.cs檔案中填寫好相應的資訊,主要注意四個(資訊全填上當然更好,後面修改nuspec檔案還方便點兒):

[assembly:Description("XXXX")]

[assembly:ComVisible(false)]

[assembly:Guid("XXXXXX")]

[assembly:AssemblyVersion("X.X.X.X")]

產生與修改nuspec檔案

nuspec是程式包清單檔案,包含與程式包有關的重要元資料,例如:Id,版本,標題,作者,licenseUrL,projectUrl,描述,版權等等,此類資訊大多數來自AssemblyInfo.cs。nuspec可以通過nuget spec命令產生。在命令提示符下,進入TestForm.csproj檔案所在目錄,然後執行:

nuget spec

如下圖所示:

圖解使用NuGet打包併發布至ProGet

注意:我在TestForm.csproj中添加了依賴項Castle.Core,但是清單檔案不會顯示這個依賴項,只有打成nupkg才會顯示出來。nuspec的作用只是元資料清單顯示,如下圖所示:

圖解使用NuGet打包併發布至ProGet

修改產生的nuspec檔案

用記事本開啟TestForm.nuspec檔案,把需要替換的資訊替換掉,不需要的tag全部刪掉,注意裡面的$xxx$巨集,這些就是引用了AssemblyInfo.cs中的設定值,在編譯產生package的時候,會使用AssemblyInfo.cs中的相應值進行替換。

注意:1. 標籤刪了

2. 標籤不能為預設

3. 標籤要麼刪了要麼修改預設的

在TestForm.csproj路徑下使用命令列nuget pack 進行打包。

基本命令:nuget pack TestForm.csproj

如下圖所示:

圖解使用NuGet打包併發布至ProGet

NuGet會使用預設的專案配置所產生的程式集進行打包。如果專案預設是Debug,而你需要用Release打包,則使用下面的命令:

Nuget pack TestForm.csproj -Prop Configuration=Release

注意:1.如果同一個目錄中只有一個專案檔案,則在執行命令時可以省略專案檔名稱。

2.如果是尚未編譯專案,可先用Build標記編譯專案,然後壓縮它。這將在執行pack命令之前編譯專案:nuget pack TestForm.csproj -Build

Nupkg包究竟包含哪些檔案:

1. libs檔案,裡面包含生成的dll或者exe檔案

2. .rels檔案

3. Content_type.xml檔案

4. nuspec清單檔案

5. package資料夾,主要包含core-properties

6. 其他

如下圖所示:

圖解使用NuGet打包併發布至ProGet

如果專案中含有依賴,生成的nupkg也會顯示出來,如下圖所示:

圖解使用NuGet打包併發布至ProGet

釋出自己的包包到ProGet

包包打包完就可以上傳至ProGet了[5]。

命令列: nuget push "你的包包完整路徑" 你的ApiKey -Source 你的ProGetURL -ApiKey 你的使用者名稱:你的密碼

如下圖所示:

圖解使用NuGet打包併發布至ProGet

最後瀏覽你的ProGet,如下圖所示:

圖解使用NuGet打包併發布至ProGet

我們隨便開啟一個專案,開啟NuGet安裝包管理器,顯示 TestForm,如下圖所示:

圖解使用NuGet打包併發布至ProGet

更新自己的包包到ProGet

更新包包相對容易,只要你更改AssemblyInfo.cs中的資訊,尤其是版本資訊,然後重複(7)與(8)即可,如下圖所示:

圖解使用NuGet打包併發布至ProGet

觀察ProGet,如下圖所示:

圖解使用NuGet打包併發布至ProGet

相關問題答案