Weitere ähnliche Inhalte
Ähnlich wie Nuget介紹- 如何使用和建立自己的package (20)
Nuget介紹- 如何使用和建立自己的package
- 3. 關於我
Alan Tsai
Web Developer - 主要後端技術使用 .Net/C# 和 Asp .Net Mvc
喜歡學一些新的東西
Blog
Alan Tsai 的學習筆記(http://blog.alantsai.net/)
Linkedin: http://linkedin.alantsai.net
alan@alantsai.net
3
- 5. 什麼是Nuget
Package Manager
方便安裝library
自動安裝library所需要的dependency
管理library的版本 – 自動更新
再也不用因為忘記安裝 xxx導致網站無法執行
同等於其他系統的:
Java – Maven
Node – NPM
Javascript - Bower
5
- 10. Package Manager Console
從 Visual Studio 的
Tool -> Nuget Package Manager -> Package Manager Console
來打開
能夠直接輸入指令:
10
Install-Package Newtonsoft.Json
- 13. Nuget package的gitignore 13
# 忽略 NuGet Packages
*.nupkg
# 忽略下載 packages 的資料夾
**/packages/*
# 但是保留 build/ 資料夾, 用作於package的 MSBuild target.
!**/packages/build/
# 下面這行可有可無 - 就算沒有也會自動產生
#!**/packages/repositories.config
- 16. Nuget Package Explorer (NPE)
https://npe.codeplex.com/downloads/get/clickOnce/NuGetPackageExplore
r.application
可以用來了解和建立package – 打開 Json.Net
16
- 17. Nuget package 結構
四個特殊資料夾
lib
放library,自動加入project reference
content
非library類型要加入專案的內容
tools
安裝package的時候,可以執行的powershell script
build
加入到MSBuild 的Target
17
- 18. Nuget package meta資訊
NPE左邊的就是meta資訊
比較重要:
Id:這個是唯一值
當用Package Management Console做 Install-Package 的時候用的
Title: 名稱
Version: library的版本
Release Note:版本調整內容
Dependency:這個package還需要那些其他的package才能運作
18
- 21. NPE 建立
打開 NPE 選擇 Create a new package
左邊meta資訊輸入完
右邊開始加入檔案
lib
content
21
- 24. Nuspec 配上 Project
思考一下
其實project建立出來不就是dll
如果有用其他library不就是Dependency
meta 有些資訊其實project就有了
例如:版本
Nuget有提供nuspec檔案配上project
Nuspec提供一些meta資訊
Project就是dll產生處
24
- 25. Nuspec 配上project – nuspec設定
設定
Nuspec檔案檔名同project,並且在同資料夾
例如有個
Net35Library.csproj
Net35Library.nuspec
Nuspec檔案內容
$$ 參數是會從專案傳入
25
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
</metadata>
</package>
- 27. Nuspec 配上project
執行
加一些build參數例如 使用release:
產生
27
nuget pack {csproj location} -build
{id}{版號}.nupkg
nuget pack {csproj location} -build -Prop Configuration=Release
- 28. Nuspec 配上project
優點
自動把build內容放到lib資料夾
自動把檔案放到content
自動加入任何nuget Dependency
缺點
不一定所有content都要放
可以執行nuget的時候加上 –exclude 來過濾不加入
不適合一個package要
包多個project的dll
同dll要有多個framework的版本在同個package
結論
一般一個專案一個package很適合這種類型
28
- 32. 使用方式 – 設定
Nuspec 一樣用來提供package meta資訊
空的nuspec檔案可以用指令 產生
要放入package內容則是依照nuspec位置的檔案結構而放
例如,我想建立一個和NPE範例一樣的package,我的結構會是:
兩個資料夾內容會進入package
content
lib
32
nuget spec
- 37. 建立package方式總結
建立方式 優點 缺點 使用情景
Nuget Package
Explorer
• 直覺 – 填入欄位就
好
• 簡單操作 – 不需要
懂內部結構
• 每個人建立出來可
能不同
• 無法自動化
• 建立一次性
package
• 學習建立package
Nuspec + project
• 建立出來dll自動放
入lib
• 專案其他檔案自動
放入content
• 可以自動化
如果package內容不止
在一個project裡面,
不方便加入
一個project代表一個
nuget package
Nuspec
• 加入package的內
容自動從nuspec目
錄下面取得
• 可以加入任意檔案
• 可以自動化
會需要一些script比較
容易產生
如果一個project不能
夠簡單建立出一個
package
37
- 38. Reference
Nuget doc (官方文件) https://docs.nuget.org/
nuspec 檔案內容 https://docs.nuget.org/create/nuspec-reference
Github範例專案:
https://github.com/alantsai-samples/Nuget-Package-Create-Sample
我的部落格
Nuget 使用
http://blog.alantsai.net/2016/03/what-is-nuget-how-to-use-nuget-and-how-to-restore-
properly.html
Nuget 檔案結構
http://blog.alantsai.net/2016/04/create-nuget-with-nuget-package-explorer-understand-
nuget-package-structure.html
38