共用方式為


升級至新的 .NET 版本

每年都會發行新的 .NET 版本。 只要新版本可供使用,許多開發人員就會開始升級程序,而其他人員則會等到其所使用的版本不再受支援為止。 升級程序有多個要考量的層面。

升級至新 .NET 版本的常見原因:

  • 目前使用的 .NET 版本不再受支援
  • 新版本支援新的作業系統
  • 新版本具有重要的 API、效能或安全性功能

升級開發環境

若要升級至新的 .NET 版本,.NET SDK 會是要安裝的主要元件。 其中包含更新的 .NET CLI、組建系統和執行階段版本。

.NET 網站提供的安裝程式和封存,可供您在任何支援的作業系統和結構下載及使用。

某些作業系統有套件管理員,您也可以使用此套件管理員,安裝您可能偏好的新 .NET 版本。

Visual Studio 會自動安裝新的 .NET SDK 版本。 對於 Visual Studio 使用者來說,升級至較新的 Visual Studio 版本就已足夠。

升級原始程式碼

升級應用程式的唯一必要變更是,將專案檔中的 TargetFramework 屬性更新為較新的 .NET 版本。

以下說明做法:

  • 開啟專案檔 (*.csproj*.vbproj*.fsproj 檔案)。
  • 例如,將 <TargetFramework> 屬性值從 net6.0 變更為 net8.0
  • 如果使用的是 <TargetFrameworks> 屬性,則相同的模式也適用於該屬性。

小提示

GitHub Copilot 應用程式現代化 - 升級功能可以自動進行這些變更。

下一步是使用新的 SDK 建置專案 (或解決方案)。 如果需要其他變更,SDK 會提供警告和錯誤,以為您提供引導。

您可能需要執行 dotnet workload restore,以使用新的 SDK 版本還原工作負載。

其他資源:

版本固定

當您升級 .NET SDK、Visual Studio 或其他元件等開發工具時,您可能會遇到影響建置程式的新行為、分析器警告或重大變更。 透過固定到版本,您可以升級開發環境,同時保持對專案中特定元件更新時間的控制。

版本鎖定提供數個優點:

  • 可預測的構建: 確保在不同機器和 CI/CD 環境中保持一致的構建結果。
  • 逐步採用:允許您逐步採用新功能,而不是一次全部採用。
  • 避免非預期的變更:防止新的分析器規則、SDK 行為或套件版本導致建置失敗。
  • 團隊協調: 使團隊能夠在計劃的時間一起升級,而不是在工具更新時單獨升級。
  • 偵錯和疑難排解:當您控制哪些版本已變更時,可讓您更輕鬆地隔離問題。

下列各節說明控制 .NET 專案中不同元件版本的各種機制:

使用 global.json 控制 SDK 版本

您可以使用 global.json 檔案釘選專案或解決方案的 .NET SDK 版本。 此檔案會指定執行 .NET CLI 命令時要使用的 SDK 版本,而且與專案目標的執行階段版本無關。

在解決方案根目錄中建立 global.json 檔案:

dotnet new globaljson --sdk-version 9.0.100 --roll-forward latestFeature

此命令會建立下列 global.json 檔案,將 SDK 釘選至 9.0.100 版或 9.0 主要版本內的任何更新版本修補程式或功能頻段:

{
  "sdk": {
    "version": "9.0.100",
    "rollForward": "latestFeature"
  }
}

原則 rollForward 會控制在無法使用確切版本時選取 SDK 版本的方式。 此設定可確保當您升級 Visual Studio 或安裝新的 SDK 時,您的專案會繼續使用 SDK 9.0.x,直到您明確更新 global.json 檔案為止。

如需詳細資訊,請參閱 global.json 概觀

控制分析器行為

程式碼分析器可以引入新的警告或變更版本之間的行為。 您可以透過AnalysisLevel屬性來控制分析器版本,以維護一致的建置。 此屬性可讓您鎖定特定版本的分析器規則,以防止在升級 SDK 時引入新規則。

<PropertyGroup>
  <AnalysisLevel>9.0</AnalysisLevel>
</PropertyGroup>

設定為 9.0時,只會啟用 .NET 9 隨附的分析器規則,即使您使用 .NET 10 SDK 也一樣。 這可防止新的 .NET 10 分析器規則影響您的組建,直到您準備好解決它們為止。

如需詳細資訊,請參閱 AnalysisLevel

控管 NuGet 套件版本

透過跨專案一致地管理套件版本,您可以防止意外更新並維護可靠的建置。

套件鎖定檔案

套件鎖定檔案可確保套件還原作業在不同環境中使用完全相同的套件版本。 鎖定檔案 (packages.lock.json) 記錄了所有套件及其依賴項的確切版本。

在專案檔案中啟用鎖定檔案:

<PropertyGroup>
  <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>

若要確保當鎖檔過期時,建置會失敗:

<PropertyGroup>
  <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
  <RestoreLockedMode>true</RestoreLockedMode>
</PropertyGroup>

啟用鎖定檔案後,執行以 dotnet restore 產生 packages.lock.json 檔案。 將此檔案提交至版本控制系統。

中央包管理系統

中央套件管理 (CPM) 可讓您在單一位置管理解決方案中所有專案的套件版本。 這種方法簡化了版本管理並確保專案之間的一致性。

在解決方案根目錄中建立 Directory.Packages.props 檔案:

<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>

  <ItemGroup>
    <PackageVersion Include="Azure.Identity" Version="1.17.0" />
    <PackageVersion Include="Microsoft.Extensions.AI" Version="9.10.1" />
  </ItemGroup>
</Project>

在您的專案檔案中,參考套件而不指定版本:

<ItemGroup>
  <PackageReference Include="Azure.Identity" />
  <PackageReference Include="Microsoft.Extensions.AI" />
</ItemGroup>

套件來源對應

套件來源對應可讓您控制哪些 NuGet 來源用於特定套件,進而改善安全性和可靠性。

nuget.config 檔案中設定來源映射:

<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="contoso" value="https://contoso.com/packages/" />
  </packageSources>

  <packageSourceMapping>
    <packageSource key="nuget.org">
      <package pattern="*" />
    </packageSource>
    <packageSource key="contoso">
      <package pattern="Contoso.*" />
    </packageSource>
  </packageSourceMapping>
</configuration>

此設定可確保所有以 Contoso. 開頭的套件都只會從來源 contoso 還原,而其他套件則從 nuget.org 取得。

如需詳細資訊,請參閱 NuGet 套件還原

控制 MSBuild 版本

Visual Studio 支援並存安裝多個版本。 例如,您可以在同一部電腦上安裝 Visual Studio 2026 和 Visual Studio 2022。 每個 Visual Studio 版本都包含對應的 .NET SDK。 當您更新 Visual Studio 時,隨附的 SDK 版本也會更新。 不過,您可以從 .NET 下載頁面分開安裝舊版 SDK 來繼續使用舊版 SDK 版本。

MSBuild 版本會對應至 Visual Studio 版本。 例如,Visual Studio 2022 17.8 版包含 MSBuild 17.8。 .NET SDK 也包含 MSBuild。 當您使用 dotnet build時,您會使用 global.json 所指定 SDK 所包含的 MSBuild 版本或最新安裝的 SDK。

若要使用特定的 MSBuild 版本:

  • dotnet build中的釘選 SDK 版本搭配使用
  • 啟動適當的 Visual Studio 開發人員命令提示字元,以設定該 Visual Studio 版本 MSBuild 的環境。
  • 直接從特定 Visual Studio 安裝叫用 MSBuild (例如 "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe")。

如需詳細資訊,請參閱 .NET SDK、MSBuild 和 Visual Studio 版本設定

更新持續整合 (CI)

CI 管線遵循類似專案檔和 Dockerfiles 的更新程序。 一般而言,您可以只變更版本值,以更新 CI 管線

更新裝載環境

有許多可用來裝載應用程式的模式。 如果裝載環境包含 .NET 執行階段,則必須安裝新版的 .NET 執行階段。 必須在 Linux 上安裝相依性,不過,這些相依性在 .NET 版本之間通常不會有所變更。

針對容器,FROM 陳述式必須變更以包含新的版本號碼。

下列 Dockerfile 範例示範如何提取 ASP.NET Core 9.0 映射。

FROM mcr.microsoft.com/dotnet/aspnet:9.0

Azure App Service 之類的雲端服務中,需要設定變更。

另請參閱