引言
.NET Core 中的 global.json 對一個專案非常重要,因為它能確保專案在不同開發環境中使用一致的 .NET SDK 版本。這對於團隊協作非常重要
分享主軸
關於 Global.json的重要性
在 .NET 開發中,一台電腦可以安裝多個 SDK 版本。為了確保專案使用正確的 SDK 版本,我們可以使用 global.json 來進行版本控制
專案global.json設定的版本 :
{
"sdk": {
"version": "8.0.200"
}
}
電腦安裝的版本 :
此時因為有在 Global.json 內設定SDK版本,所以系統會根據 global.json 中設定的版本,選擇電腦上安裝的同一系列中最新的修訂版本號(Patch Version) (第三天文章有分享到SDK版本的詳細,若忘記,可以回去看一下 ~ )
錯誤避免 :
若 global.json 設定為 8.0.205,但電腦沒有安裝該版本,則會出現錯誤。
出錯原因為 : 找不到指定的 8.0.205 版本,因為沒有安裝
同理,若電腦只安裝 8.0.302,而 global.json 設定為 8.0.204,也會出現錯誤。
出錯原因為 : 找不到指定的 8.0.204 版本,因為沒有安裝,設定為 8.0.300 就不會錯誤
自動選擇最新版本:
若刪除 global.json,電腦會自動使用已安裝的最新版本 SDK。
團隊協作:
在專案中包含 global.json 並進行版本控制,這樣團隊成員在開發時都會使用相同的 SDK 版本,避免因版本不同而產生的問題,也會比較不覺得好像哪裡不對勁的XD
( 若沒有 global.json,每人都是按照電腦有安裝的版本去 build,總感覺哪裡怪怪的XD )
補充 :
就算今天例如 A 電腦裝 8.0.205,B 電腦裝 8.0.208,修訂版本號(Patch Version)通常用於修復漏洞和小錯誤,這些更新是向後兼容的。因此,使用不同的修訂版本號(例如 8.0.204 vs 8.0.208)通常不會對專案的編譯和運行產生重大影響,但為了確保完全一致性,建議團隊成員安裝相同的 SDK 版本。這是可以通過內部溝通和版本管理工具來做規範的,大家遵守。
其他可能情境 :
dotnet new global.json --sdk-version 8.0.200 --roll-forward latestFeature --force
{
"sdk": {
"version": "8.0.200",
"rollForward": "latestFeature"
}
}
假設 global.json 中設定的版本為 8.0.200,而電腦上安裝的版本有 8.0.204 和 8.0.300,系統會選擇 8.0.300,因為它是同一主版本和次版本中最新的功能版本,如果沒有安裝 8.0.300,則會選擇 8.0.204。
dotnet new global.json --sdk-version 8.0.200 --roll-forward latestPatch --force
{
"sdk": {
"version": "8.0.200",
"rollForward": "latestPatch"
}
}
假設 global.json 中設定的版本為 8.0.200,而電腦上安裝的版本有 8.0.204 和 8.0.300,系統會選擇 8.0.204,因為它是同一功能主版本、次版本下的最新修訂版本(8.0.2xx)。
如果沒有安裝 8.0.204,則會出現錯誤,提示找不到指定的 SDK 版本。
可以使用此兩指令去對專案進行統一SDK版本設定。
簡單統整今日重點
今日結語
了解 global.json 這不太起眼的檔案,卻是重要的,讓自己更對於團隊協作開發前期制定一些規範,增加一些重要知識!
明天會再針對 global.json 一些其他可以做的設定做簡單介紹,希望今天有幫助到大家,明天繼續努力!