共用方式為


.NET 的版本設定方式

.NET 運行時間和 .NET SDK 會以不同的頻率新增新功能。 一般而言,SDK 會比運行時間更頻繁地更新。 本文說明運行時間和 SDK 版本號碼。

.NET 會每隔 11 月發行一個新的主要版本。 偶數版本,例如 .NET 6 或 .NET 8,是具長期支援(LTS)的版本。 LTS 版本提供 3 年的免費支援和修補程式。 奇數版本是標準期限支援 (STS) 版本。 標準期限支援版本會取得兩年的免費支援和修補程式 (從 .NET 9 開始)。

版本詳細資訊

.NET 執行階段具有主版本.次版本.修補版本的方法,其版本控制遵循語義化版本控制

不過,.NET SDK 不會遵循語意版本控制。 .NET SDK 的發布速度提高,其版本號碼必須同時反映關聯的運行時以及 SDK 本身的次版本和修補版本。

.NET SDK 版本號碼的前兩個位置與發行時包含的 .NET 運行時版本相符。 每個版本的 SDK 都可以為此運行時間或任何較低版本建立應用程式。

SDK 版本號碼的第三個位置表示次要和修補程序號碼。 次要版本乘以 100。 最後兩個數位代表修補程式編號。 次要版本 1,修補程式第 2 版會以 102 表示。 例如,以下是運行時間和 SDK 版本號碼的可能序列:

改變 .NET 運行時間 .NET SDK 註釋
初始版本 5.0.0 5.0.100 初始版本。
SDK 修補程式 5.0.0 5.0.101 此 SDK 修補程式未改變執行時間。 SDK 修補程式會將數字最後一位增加。
執行階段和 SDK 修補程式 5.0.1 5.0.102 運行時修補程式會增加運行時修補程式編號。 SDK 修補程式會將數字最後一位增加。
SDK 功能變更 5.0.1 5.0.200 執行時期修補程式未變更。 新的 SDK 功能將提升 SDK 修補程式的第一個版本號。
執行時修補程式 5.0.2 5.0.200 運行時修補程式會增加運行時修補程式編號。 SDK 不會變更。

在上表中,您可以看到數個原則:

  • 執行時期和 SDK 共用主要版本號和次要版本號。 指定SDK和運行時間的前兩個數字應該相符。 上述所有範例都是 .NET 5.0 版本數據流的一部分。
  • 只有在更新運行時間時,運行時間的修補程式版本才會更新。 SDK 修補程式編號不會更新執行時修補程式。
  • 只有在 SDK 更新時,SDK 的修補程式版本才會更新。 運行時間修補程式可能不需要 SDK 修補程式。

注意:

  • 如果 SDK 在運行時間功能更新之前有 10 個功能更新,版本號碼就會進入 1000 系列。 5.0.1000 版會遵循 5.0.900 版。 這種情況預計不會發生。
  • 不會出現連續 99 次修補程式版本而沒有功能新增的情況。 如果一個軟體版本接近這個數字,它就會強制成為功能性版本。

您可以在 dotnet/designs 存放庫查看初始提案中的更多詳細數據。

語意版本控制

.NET 運行時間 大致遵循 語意版本控制 (SemVer),採用 MAJOR.MINOR.PATCH 版本控制,使用版本號碼的各個部分來描述變更的程度和類型。

MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]

選擇性 PRERELEASEBUILDNUMBER 元件絕不是支援版本的一部分,而且只存在於夜間組建、來源目標的本機組建,以及不支援的預覽版本。

執行時版本號變更

  • MAJOR 會遞增一年一次,且可能包含:

    • 產品的重大變更或新產品方向。
    • API 引進了重大變更。 接受重大變更需高標準。
    • 已採用現有相依性的新版本 MAJOR

    每年會推出主要版本,偶數版本是長期支援 (LTS) 的版本。 使用此版本控制配置的第一個 LTS 版本是 .NET 6。 最新的非 LTS 版本是 .NET 9。

  • MINOR 增加的條件是:

    • 已新增公用 API 介面區。
    • 已新增行為。
    • 已採用現有相依性的新版本 MINOR
    • 引進新的相依性。
  • PATCH 增加的條件是:

    • 錯誤修正已進行。
    • 已新增對較新平台的支援。
    • 已採用現有相依性的新版本 PATCH
    • 任何其他變更都不符合上述其中一個案例。

當有多個變更時,受個別變更影響的最高受影響的元素會遞增,而下列元素會重設為零。 例如,當 MAJOR 遞增時,MINOR.PATCH 會被重設為零。 當 遞增時 MINORPATCH 會重設為零,同時 MAJOR 維持不變。

檔名中的版本號碼

針對 .NET 所下載的檔案包含版本資訊,例如 dotnet-sdk-5.0.301-win-x64.exe

預覽版本

預覽版本的版本號碼會附上 -preview.[number].[build]。 例如: 6.0.0-preview.5.21302.13

服務版本

發行版本推出後,發行分支通常會停止產生每日組建,而是開始生成維護組建。 服務版本已 -servicing-[number] 附加至版本號中。 例如: 5.0.1-servicing-006924

.NET 運行時間相容性

.NET 執行環境可以維持版本之間的高度相容性。 升級至新的主要 .NET 執行階段版本後,通常來說 .NET 應用程式應該會繼續正常運作。

每個主要 .NET 執行階段版本都包含刻意、仔細審查和記載的重大變更。 記錄在案的重大變更並不是升級後可能影響應用程式的唯一問題來源。 例如,.NET 執行階段的效能提升(不被視為重大變更)可能會暴露出潛在的應用程式線程錯誤,導致應用程式無法在該版本中運行。 升級至新的 .NET 執行環境主要版本之後,大型應用程式需要進行一些修正。

根據預設,.NET 應用程式會設定為在指定的 .NET 運行時間主要版本上執行,因此強烈建議您升級應用程式以在新 .NET 運行時間主要版本上執行。 然後在升級后重新測試應用程式,以找出任何問題。

假設透過應用程式重新編譯升級不可行。 在此情況下,.NET 運行時間會提供 額外的設定 ,讓應用程式在比編譯版本更高的主要 .NET 運行時間版本上執行。 這些設定不會變更將應用程式升級至較高主要 .NET 運行時間版本所涉及的風險,而且仍然需要在升級后重新測試應用程式。

.NET 執行階段支援載入以舊版 .NET 執行階段為目標的程式庫。 升級至較新的 .NET 執行階段版本的應用程式可以參考以舊版 .NET 執行階段為目標的程式庫和 NuGet 套件。 不需要同時升級應用程式所參考之所有連結庫和 NuGet 套件的目標運行時間版本。

另請參閱