共用方式為


使用 GitHub Copilot 應用程式現代化升級 .NET 應用程式

GitHub Copilot 應用程式現代化是 Visual Studio 中 AI 支援的代理程式,可協助您將 .NET 專案升級至較新版本,並將應用程式移轉至 Azure。 本文將引導您完成使用此工具將 .NET 應用程式現代化的過程,從初始評估到最終驗證。

現代化代理程式會分析您的專案和相依性、建立升級計劃,並在整個程序中協助修正程式碼。 它支援從舊版 .NET 升級到最新版本,包括從 .NET Framework 移轉到新式 .NET。

先決條件

開始之前,請確定您符合下列需求:

  • Windows 作業系統

  • Visual Studio 2026(或 Visual Studio 2022 版本 17.14.17 或更新版本)。

  • .NET 桌面開發工作負載 ,並啟用下列選擇性元件:

    • GitHub Copilot
    • 適用於 .NET 的 GitHub Copilot 應用程式現代化
  • Copilot 授權和支援的訂閱方案:

    使用 GitHub 帳戶 搭配 Copilot 存取登入 Visual Studio。

    支援的訂用帳戶方案:

    • Copilot Pro
    • 副駕駛專業版+
    • 副駕駛業務
    • 副駕駛企業

    這很重要

    如果您變更訂用帳戶,則必須重新啟動 Visual Studio。

  • 程式代碼必須以 C# 撰寫。

啟動升級程式

升級的第一個步驟是透過與 GitHub Copilot 互動來產生方案。 請依照下列步驟啟動升級:

  1. 在 Visual Studio 中開啟 .NET 專案或解決方案。

  2. 使用下列其中一種方法存取 GitHub Copilot 應用程式現代化代理程式:

    以滑鼠右鍵按一下 [方案總管 ] 中的解決方案或專案,然後選取 [現代化]。

    —或—

    開啟 GitHub Copilot Chat 視窗,然後輸入 @modernize 您的升級或移轉要求。

  3. 告訴代理程式 @modernize 您要升級或移轉的內容。

產生升級計劃

程序啟動之後,Copilot 會分析您的專案及其相依性,然後詢問您一系列有關升級的問題。 回答這些問題之後,升級計劃會以 Markdown 檔案的形式撰寫。

若要產生和自訂您的計劃:

  1. 回答 Copilot 關於您的升級要求和偏好的問題。
  2. 檢閱 Markdown 檔案中產生的升級計劃。
  3. 或者,編輯 Markdown 檔案以變更升級步驟或新增更多內容。
  4. 當您對計劃感到滿意時,告訴 Copilot 繼續升級。

謹慎

計劃會根據專案的相依性產生。 如果您對方案的修改導致無法完成移轉路徑,升級將不會成功。 例如,如果 專案 A 相依於 專案 B ,而您從升級計劃中移除 Project B升級專案 A 可能會失敗。

下列代碼段示範計劃的結構:

# .NET 9.0 Upgrade Plan

## Execution Steps

1. Validate that an .NET 9.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed.
2. Ensure that the SDK version specified in global.json files is compatible with the .NET 9.0 upgrade.
3. Upgrade projects to .NET 9.0.
  - 3.1. Upgrade RazorMovie.csproj
  - 3.2. Upgrade RazorMovie.Tests.csproj
4. Run unit tests to validate upgrade in the projects listed below:
  - RazorMovie.Tests.csproj

## Settings

This section contains settings and data used by execution steps.

### Aggregate NuGet packages modifications across all projects

NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them.

| Package Name                                     | Current Version     | New Version | Description              |
|:-------------------------------------------------|:-------------------:|:-----------:|:-------------------------|
| HtmlSanitizer                                    | 7.1.542             | 9.0.884     | Security vulnerability   |
| Microsoft.Data.SqlClient                         | 4.0.5               | 6.0.2       | Deprecated               |
| Microsoft.EntityFrameworkCore.Design             | 6.0.0-rtm.21467.1   | 9.0.5       | Recommended for .NET 9.0 |
| Microsoft.EntityFrameworkCore.SqlServer          | 6.0.0-rc.1.21452.10 | 9.0.5       | Recommended for .NET 9.0 |
| Microsoft.EntityFrameworkCore.Tools              | 6.0.0-rc.1.21452.10 | 9.0.5       | Recommended for .NET 9.0 |
| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1  | 9.0.0       | Recommended for .NET 9.0 |

...

執行升級

一旦升級計劃準備就緒,請告知 Copilot 開始升級。 升級程序啟動后,Copilot 可讓您知道它在聊天視窗中正在做什麼,並開啟 [ 升級進度詳細 數據] 檔,其中會列出每個步驟的狀態。 如果遇到問題,Copilot 會暫停並詢問您的方向,或協助修正這些問題。

升級過程中的每個主要步驟都會提交至本機 Git 存放庫。

檢閱升級結果

升級完成時,會產生描述升級每個步驟的報告。 此工具會針對升級程式的每個部分建立 Git 認可,讓您可以輕鬆地復原變更,或取得變更的詳細資訊。 此報告包含 Git 認可雜湊,並提供 [後續步驟 ] 區段,說明升級完成後應採取的步驟。

下列範例顯示包含測試失敗之已完成升級的報告:

# .NET 9 Upgrade Report

## Project modifications

| Project name     | Old Target Framework | New Target Framework | Commits            |
|:-----------------|:--------------------:|:--------------------:|--------------------|
| RazorMovie       | net6.0               | net9.0               | af8cf633, aa61a18d |
| MvcMovie         | net6.0               | net9.0               | cc8c9015           |
| WpfMovie         | net6.0-windows       | net9.0-windows       | 9c4b13f9           |
| RazorMovie.Tests | net6.0               | net9.0               | b8d85e97           |
| MvcMovie.Tests   | net6.0               | net9.0               | b8d85e97           |
| WpfMovie.Tests   | net6.0-windows       | net9.0-windows7.0    | b8d85e97           |

## NuGet Packages

| Package Name                                     | Old Version         | New Version | Commit Id |
|:-------------------------------------------------|:-------------------:|:-----------:|-----------|
| HtmlSanitizer                                    | 7.1.542             | 9.0.884     | af8cf633  |
| Microsoft.Data.SqlClient                         | 4.0.5               | 6.0.2       | bf8deeac  |
| Microsoft.EntityFrameworkCore.Design             | 6.0.0-rtm.21467.1   | 9.0.5       | bf8deeac  |
| Microsoft.EntityFrameworkCore.SqlServer          | 6.0.0-rc.1.21452.10 | 9.0.5       | bf8deeac  |
| Microsoft.EntityFrameworkCore.Tools              | 6.0.0-rc.1.21452.10 | 9.0.5       | bf8deeac  |
| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1  | 9.0.0       | bf8deeac  |

## All commits

| Commit ID | Description                                             |
|:----------|:--------------------------------------------------------|
| af8cf633  | Update HtmlSanitizer package in RazorMovie.csproj       |
| aa61a18d  | Upgrade target framework in RazorMovie.csproj           |
| cc8c9015  | Upgrade to .NET 9 and update dependencies               |
| bf8deeac  | Update package references in MvcMovie.csproj            |
| 9c4b13f9  | Update WpfMovie.csproj to target .NET 9.0               |
| b8d85e97  | Update test projects to .NET 9 and enhance dependencies |

## Test Results

| Project Name           | Passed | Failed | Skipped |
|:-----------------------|:------:|:------:|:-------:|
| RazorMovie.Tests       |   0    |   0    |    0    |
| MvcMovie.Tests         |   2    |   0    |    0    |
| WpfMovie.Tests         |   6    |   1    |    0    |

## Next steps

- Review the test results and address the single failing test in `WpfMovie.Tests`.
- Ensure all updated NuGet packages are compatible with your application.
- Leverage new features and improvements in .NET 9.0 for your projects.

後續步驟

完成升級程序後:

  • 檢閱產生的升級報告和任何測試結果。
  • 解決可能保留的任何失敗測試或編譯錯誤。
  • 請確定所有更新的 NuGet 套件都與您的應用程式相容。
  • 徹底測試您的應用程式,以驗證升級是否成功。
  • 套用升級後的 .NET 版本中可用的新功能和改善。