Nuget快捷實踐 簡介 本文主要包含三個部分,即創建nuget包、上傳nuget包和刪除nuget包。旨在引導快速使用nuget打包和使用,並實現對於nuget的簡單管理。 本文使用的nuget服務是基於自行搭建的nuget server v3.0.0.0。具體搭建方法可以參考nuget官方的 " ...
Nuget快捷實踐
簡介
本文主要包含三個部分,即創建nuget包、上傳nuget包和刪除nuget包。旨在引導快速使用nuget打包和使用,並實現對於nuget的簡單管理。
本文使用的nuget服務是基於自行搭建的nuget server v3.0.0.0。具體搭建方法可以參考nuget官方的指導教程。
另外文章中還涉及到兩個程式:
- Nuget Package Explorer:v4.1.38
- nuget.exe:v4.5.1.4879
本文閱讀時間大約為十分鐘。
創建nuget包
對於nuget的打包方式的權威指南當然是nuget官方的指導文檔。這份文檔優點是對於nuget包的結構講解的很清楚,缺點是不太符合本文的快速實踐的意圖。針對這個情況也有解決辦法,萬能的網友們開發了Nuget Package Explorer,目前該項目托管在Github上,安裝了Win10系統的可以直接到微軟應用商店下載。
打開Nuget Package Explorer後選擇新建package,在新建界面中填寫必要信息。包括包的Id,版本號,作者,發佈說明等。
以上圖為例,在新建nuget包時重點填寫如下信息:
- Id:包的唯一標識,本文以Company.Application.Model.Lib為例
- Version:當前發佈的類庫版本號,本文以1.0.0為例
- Title:類庫名稱
- Authors:作者
- Owners:所有者
- Description:類庫描述
- Release Notes:當前版本的發佈說明
如果需要添加dll文件,則在右側的Package Contents空白區域右鍵,在菜單中選擇Add Lib Folder,併在新出現的lib上右鍵,在菜單中選擇“Add Existing File...”。操作界面參考下圖。
創建有依賴的nuget包
如果編譯類庫時如果有的dll是別的nuget包的,最好是將被依賴的nuget包添加到當前nuget包的依賴項中。否則用戶同時下載兩個類庫時,可能出現相同的dll文件被覆蓋的情況,以至於難於控制dll的版本,而且容易出現編譯問題。
那麼如何添加依賴項呢?參考下圖的步驟:
在填寫類庫信息的Package Metadata頁最下方有個按鈕,點擊後彈出相關的編輯頁面。下圖以標註的形式說明操作順序:
- 點擊
Edit Dependencies
按鈕彈出依賴項編輯頁面 - 點擊Groups旁邊的加號按鈕,Tip是
Add a new group
,不要編輯Target Framework
編輯框 - 點擊依賴項編輯頁面下方的小手圖標的按鈕,Tip是
Select dependency from nuget feed
- 在彈出的
Select package
頁面選擇相關的依賴項並雙擊,完成選擇 - 使用自己搭建的nuget站點時,
Select package
頁面的Package Source可能是http://功能變數名稱:埠/nuget/
上傳nuget包
上傳nuget包的方式很簡單,在Nuget Package Explorer的File->Publish
菜單,就可以打開nuget上傳頁面。該頁面需要填寫兩個內容:
- Publish Url:nuget伺服器的發佈地址,可以在nuget server首頁查看到
- Publish key or PAT:發佈時驗證合法性的密鑰,可以跟nuget server的管理員詢問得到
刪除nuget包
經過上面的幾個步驟之後,nuget包就已經完成打包和發佈工作了,並且可以提供給其他同事使用。但是如果不小心上傳了錯誤的nuget包,或者在發佈後一段時間發現有的nuget包版本存在嚴重問題,不能提供給其他人使用,而且想要刪掉該怎麼辦呢?
對此Nuget Package Explorer表示無能為力,要完成這個工作可以藉助nuget官方提供的nuget.exe工具來完成這個事情。
nuget.exe支持delete命令,詳細文檔可以參考此處
從官方網站下載nuget.exe在命令行中直接執行nuget.exe
後(不含參數),會列出nuget程式支持的所有命令:
輸入nuget help delete
,彈出如下提示:
以本文中上傳的nuget包Company.Application.Model.Lib v1.0.0
為例,刪除命令是:
nuget delete Company.Application.Model.Lib 1.0.0 -ApiKey xxxx -Source http://ip:port/nuget
執行命令後會彈出提示,提示是否真的需要刪除,直接輸入y
並回車就ok了。
總結
相對於傳統的dll管理方式,使用nuget的方式可以極大的提高方便性並有效的對於依賴項進行版本化的管理。解決方案編譯時還能自動下載nuget包的相關內容,有條件的情況下還是儘量使用nuget進行公共文件的管理。