文章目錄
使用 NuGet Package Explorer 建立 NuGet 套件
公司許多專案中有不少底層功能是可以共用的(ex. 資料庫相關操作、redis 相關操作、web request、….etc),原本都是使用 dll 參考,但這樣的方式有些缺點:1. 如果 dll 是放在共用資料庫供所有專案參考,就可能出現 A 專案需要更新 dll,但 B 專案沒有使用新 dll 的需求可以繼續延用舊 dll,但更新共用資料夾中的 dll 檔案時就會強迫所有專案一併更新,這可能造成其他專案因此出現問題 2. 如果各個專案自行管理 dll,雖然能解決無差別更新的問題,只是這樣一來就跟沒有共用一樣了
最後決定將共用的功能都包裝成 NuGet package 讓其他專案使用 NuGet 來加入參考,因為 NuGet 有版本的概念,可以避免無差別更新的狀況,各專案可以依實際狀況來進行版本升級
什麼是 NuGet Package Explorer
NuGet Package Explorer 可以讓我們簡單快速地建立 NuGet Package,也可以直接從磁碟或是 NuGet Server 開啟 NuGet Package metadata 檔案(.nupkg)
安裝 NuGet Package Explorer
使用
Chocolatey
choco install nugetpackageexplorer
下載安裝檔 - 載點
如果曾經安裝過 3.9 以前版本,需先移除才能再次安裝 (2017/07/12 最新版本為 3.23 )
建立 NuGet Package
Create a mew package
編輯 Package metadata
Id
+Version
需要是 unique結果對應
Edit dependencies
用來加入 NuGet 的相依關係
Add a new group
Target framework 填上目標 .NET Framewrok
按下任一個欄位 Target framework 會自動更新為正確名稱
Select dependency from NuGet feed
Add new dependency
加入成功
安裝時會出現相依提示
Edit assembly references
用來加入 dll 參考
加入資料夾及檔案
在 Package contents 區塊空白處按下滑鼠右鍵可以加入資料夾及檔案
資料夾用法請參考下表
Folder | Description | Action upon package install |
---|---|---|
tools | 用來放 Powershell scripts 跟可以從 Package Manager Console 執行的程式 | 內容會被複製到專案資料夾中,tools 資料夾會被加至 PATH 環境變數 |
lib | 用來放 .dll ,.xml ,.pdb | .dll 組件會直接被加入參考,.xml 及 .pdb 會被複製至專案資料夾中 |
content | 用來放其他類型檔案 | 標案會被複製至專案資料夾下 |
build | 用來放 MSBuild 的 .targets 與 .props 檔 | 會自動將 MSBuild 行為加至 .csproj (NuGet 2.x) 或 project.lock.json (NuGet 3.x). |
src | 原始碼 | 發行位址(https://nuget.smbsrc.net/))與一般 nuget package 不同,一般安裝時不會動作 |
依 lib 為例
需要加入 lib 目標平台的資料夾
在目標平台資料夾中加入
.dll
及.pdb
分析 NuGet Package 設定是否正確
NuGet Package Explorer 主選單 TOOLS –> Analyze Package
分析結果
沒有出現 issue 就可以發行了
發行 NuGet Package
NuGet Package Explorer 主選單 FILE –> Publish…
填入 Publish Url 及 Publish Key
這邊以自建 NuGet Server 為例
Visual Studio 加入 NuGet Source
Visual Studio 主選單 Tools –> Options
NuGet Package Manager –> Package Sources –> +
填入 Name 與 Source –> Upate
搜尋時調整 source
搜尋結果
心得
NuGet Package Explorer 是個簡便工具,用它來建立 NuGet Package 可以省下不少時間。當然也可以透過 NuGet CLI 來建立 NuGet Package,但使用 NuGet CLI 來建立 package 相對繁瑣許多,如果有興趣可以參考 Creating NuGet packages
之前建立 NuGet Package 時常常覺得設定很簡單,不用特別記,但幾次下來發現每次要建立時還是要找一下設定,回想一下該做什麼,不過跟 NuGet CLI 比還是方便不少,透過幾個簡單步驟就能擁有自己的 NuGet Package 了
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-01
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。