什麼是 GitHub Copilot 現代化?

GitHub Copilot 現代化是一個 GitHub Copilot 代理程式,幫助你將專案升級到較新的 .NET 版本,並快速且自信地將 .NET 應用程式遷移到 Azure。 它會引導你進行評估、解決方案建議、程式碼修正,以及跨Visual Studio、Visual Studio Code、GitHub Copilot CLI 和 GitHub.com 的驗證。

使用此代理程式:

  • 升級到更新版的 .NET。
  • 遷移技術並部署到 Azure。
  • 現代化你的 .NET 應用程式,尤其是從 .NET Framework 升級時。
  • 評估應用程式的程式碼、組態和相依性。
  • 規劃並設定正確的 Azure 資源。
  • 修正問題並套用雲端移轉的最佳做法。
  • 驗證您的應用程式是否成功建置和測試。

Scenarios

代理提供多種端對端現代化工作流程,稱為 情境。 每個情境都是一個受管理的工作流程,引導你完成特定類型的升級或遷移:

Scenario 說明 範例提示
.NET版本升級 從較舊的 .NET 版本升級到 .NET 8、9、10 或更新版本。 」把我的解決方案升級到.NET 10“
SDK 風格轉換 將舊有專案格式轉換為 SDK 風格。 「轉換成 SDK 風格」
Newtonsoft.Json 升級 將 Newtonsoft.json 替換為 System.Text.Json。 「從 Newtonsoft.Json 升級」
SqlClient 升級 從 System.Data.SqlClient 升級到 Microsoft。Data.SqlClient。 「更新 SqlClient」
Azure Functions 升級 將 Azure Functions 從內部處理升級到隔離工作者模型。 「升級我的Azure Functions」
語意核心 與代理 將 語意核心 Agents 升級至 Microsoft Agent Framework。 「升級我的SK特工」

欲了解所有劇本及30+內建升級技能的完整參考,請參見 「情境與技能參考」。

提供意見反應

Microsoft重視你的回饋,並用來改進代理程式。 請使用以下任一選項留下回饋:

先決條件

在使用代理程式前,先在開發環境中設定 GitHub Copilot 現代化。 安裝步驟請參見 Install GitHub Copilot modernization

升級 .NET 專案

現代化代理程式支援升級以下類型的 C# 與 Visual Basic 專案:

  • ASP.NET Core(以及相關技術如 MVC、Razor Pages 和 Web API)
  • Blazor
  • Azure Functions
  • Windows Presentation Foundation(WPF)
  • Windows Forms
  • WinUI
  • .NET MAUI 與 Xamarin
  • 類別庫
  • 主控台應用程式
  • 測試專案(MSTest、NUnit 與 xUnit)

要開始升級,請參見 使用 GitHub Copilot 現代化升級 .NET 應用程式

支援的升級路徑

代理程式支援以下升級路徑:

來源 目標
.NET 框架(任何版本) .NET 8 或更新版本
.NET 核心 1.x–3.x .NET 8 或更新版本
.NET 5 或更新版本 .NET 8 或更新版本

Migrate .NET projects to Azure

現代化代理程式透過自動化分析、AI 驅動的程式碼修復、建置與漏洞檢查,以及部署自動化,簡化 Azure 遷移:

  • 分析與智慧建議。

    評估您的應用程式是否準備好進行 Azure 遷移,並根據其相依性與已識別問題獲得量身訂做的指導。

  • AI 驅動的程式碼修復。

    套用預先定義的最佳實務程式碼模式,以最少的手動工作加速現代化。

  • 自動建置與 CVE 解析。

    打造你的應用程式並解決編譯錯誤與漏洞,簡化開發流程。

  • 無縫部署。

    部署到 Azure,讓你的程式碼從開發到生產環境更快。

預先定義的移轉工作

GitHub Copilot 對 .NET 的現代化提供預先定義的任務,捕捉產業最佳實務並涵蓋常見遷移情境。

  • 遷移至基於管理身份的資料庫,包括Azure上的Azure SQL資料庫、Azure SQL MI 及 Azure PostgreSQL

    透過從本地或舊有資料庫(如 DB2、Oracle DB 或 SQL Server)遷移到 Azure SQL DB、Azure SQL 受控執行個體 或 Azure PostgreSQL,來現代化你的資料層。 使用安全管理身份驗證。

  • 遷移到Azure檔案儲存

    將檔案 I/O 操作從本地檔案系統移至 Azure 檔案儲存,以便實現可擴展且雲端的檔案管理。

  • 遷移到 Azure Blob 儲存體

    將本地或跨雲物件儲存,或本地檔案系統檔案 I/O,換成 Azure Blob 儲存體 來處理非結構化資料。

  • 遷移到 Microsoft Entra ID

    從Windows Active Directory轉移驗證與授權到Microsoft Entra ID(前稱Azure AD),用於現代身份管理。

  • 使用受控身分識別和 Azure Key Vault 遷移至安全憑證

    將設定或程式碼中的純文字憑證替換為安全、受管理的身份,並使用 Azure Key Vault 來管理秘密。

  • 遷移到 Azure 服務匯流排

    從傳統或第三方訊息佇列(如 MSMQ 或 RabbitMQ)或 Amazon SQS(AWS 簡易佇列服務)轉向 Azure 服務匯流排,以獲得可靠的雲端訊息傳遞。

  • 遷移至Azure通訊服務電子郵件

    用 Azure 通訊服務取代直接發送 SMTP 電子郵件,以實現可擴展且安全的電子郵件傳遞。

  • Migrate to Confluent Cloud/Azure Event Hub for Apache Kafka

    從本機或內部部署的 Kafka 過渡到受控事件串流服務,如 Confluent Cloud 或 Azure 事件中樞。

  • 遷移到 OpenTelemetry on Azure

    從本地日誌框架如 log4net、Serilog 和 Windows 事件日誌,轉換到 Azure 上的 OpenTelemetry。

  • 藉由使用受控身分識別遷移到 Redis 的 Azure 快取

    以 Azure Cache for Redis 取代記憶體內或本地 Redis 快取實作,以獲得高可用性、可擴展性及企業級安全性。

運作方式

要開始升級或遷移流程,請參見:

  1. 在你的開發環境中開啟你的 .NET 專案或解決方案。

  2. 啟動代理人時,請使用以下其中一種方法:

    • Visual Studio:右鍵點擊 方案總管 中的解決方案或專案,選擇 Modernize。 或者,打開 GitHub Copilot Chat 視窗,輸入 @Modernize
    • Visual Studio Code:打開 GitHub Copilot Chat面板並輸入 @modernize-dotnet
    • GitHub Copilot CLI:輸入 @modernize-dotnet,接著輸入您的升級或遷移請求。
    • GitHub.com:使用你倉庫中的 modernize-dotnet 編碼代理程式。
  3. 告訴客服人員要升級或遷移什麼。

當你要求現代化代理升級應用程式時,Copilot 會先提示你建立一個新分支,前提是你正在使用 Git 倉庫。 接著 Copilot 會評估你的專案並執行三階段工作流程。 每個階段會在你的倉庫裡產生 Markdown 檔案 .github/upgrades/{scenarioId} ,讓你在繼續前可以先檢視接下來的內容。 如果之前嘗試已經有.github/upgrades/{scenarioId},Copilot會詢問是否繼續或重新開始。

Copilot 首先檢視您的專案結構、相依關係及程式碼模式,建立完整的評估。 該 assessment.md 檔案列出了破壞性的變更、API 相容性問題、已棄用的模式以及升級範圍。

評估結束後,Copilot 會執行以下三個階段:

  1. Assessment: Copilot檢視您的專案結構、相依性與程式碼模式,並提出策略決策供您檢視,例如升級策略(自下而上、自上而下或同時進行)、專案升級方法、技術現代化選項及相容性處理。 Copilot 將確認決策存為 upgrade-options.md

  2. Planning: Copilot 將評估結果及您確認的選項轉換為詳細規格。 檔案記錄 plan.md 了升級策略、重構方法、相依路徑及風險緩解措施。

  3. Execution: Copilot 將計畫拆解為連續且具體的任務,驗證標準則在 tasks.md。 每個任務都描述一個變更,以及 Copilot 如何確認成功。

在繼續前進之前,請編輯任何 Markdown 檔案 .github/upgrades/{scenarioId} ,調整升級步驟或加入上下文。

升級策略

在評估階段,代理人會評估您的解決方案,並建議以下策略之一:

策略 最適合用於 說明
自下而上 具有深度依賴圖的大型解 先升級葉子專案,再往上推進。
自上而下 關於主要應用的快速回饋 先升級應用程式專案,再修正相依性。
全能 小而簡單的解法 一次升級所有專案。

流量模式

代理程式支援兩種流程模式,控制暫停你的輸入次數:

  • 自動: 代理人會不停歇地完成所有階段,只在真正的阻礙因素時停下。 最適合有經驗的使用者和簡單的升級。
  • 引導: 代理人會在每個階段邊界暫停,讓你在繼續前檢視評估、計畫和任務。 最適合初次使用者和複雜解決方案。

可隨時透過說 「暫停」( 進入導引模式)或「 繼續」( 進入自動模式)切換模式。

狀態管理

代理會將所有升級狀態儲存在 .github/upgrades/{scenarioId}/。 資料夾包含:

File Purpose
assessment.md 你的方案分析
upgrade-options.md 已確認的升級決策
plan.md 有序任務計畫
tasks.md 即時進度儀表板
scenario-instructions.md 代理的持續記憶,包括偏好設定、決策與自訂指令
execution-log.md 所有更動的詳細審核紀錄
tasks/{taskId}/task.md 每個任務的範圍與上下文
tasks/{taskId}/progress-details.md 各任務執行筆記與結果

因為所有狀態都在這個資料夾裡,你可以關閉 IDE、切換工作階段,甚至切換開發環境(例如,從 VS Code 開始,然後在 Visual Studio 繼續)。 代理人從中斷的地方繼續。

小提示

請將 .github/upgrades/ 資料夾提交到你的分支。 已承諾狀態作為備用,讓團隊成員查看升級進度。

執行升級

每個階段完成後,檢視並修改產生的檔案,然後告訴 Copilot 繼續進入下一階段。

當你達到執行階段時,告訴Copilot開始升級。 如果 Copilot 遇到問題,會嘗試找出原因並套用修正方案。 如果 Copilot 無法修正問題,它會請求你的協助。 當你介入時,Copilot 會從你的變更中學習,並在問題再次出現時自動執行。

升級結果

當 Copilot 執行每個任務時,會更新 tasks.md 中的 .github/upgrades/{scenarioId} 檔案,更新每個步驟的狀態。 請檢視此檔案以監控進度。 Copilot 會為整個流程的每個部分建立一個 Git 提交,這樣你可以回滾變更或檢視被更改的內容。

升級完成後,Copilot 會在聊天回應中顯示下一步。

遙測

該工具會收集專案類型、升級意圖及升級時長的資料。 開發環境會收集並彙整資料,且不包含任何可識別使用者的資訊。 欲了解更多關於Microsoft隱私政策的資訊,請參閱Visual Studio客戶體驗改善計畫