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重視你的回饋,並用來改進代理程式。 請使用以下任一選項留下回饋:
請至 @modernize-dotnet GitHub repository 提出問題。
先決條件
在使用代理程式前,先在開發環境中設定 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 快取實作,以獲得高可用性、可擴展性及企業級安全性。
運作方式
要開始升級或遷移流程,請參見:
在你的開發環境中開啟你的 .NET 專案或解決方案。
啟動代理人時,請使用以下其中一種方法:
-
Visual Studio:右鍵點擊 方案總管 中的解決方案或專案,選擇 Modernize。 或者,打開 GitHub Copilot Chat 視窗,輸入
@Modernize。 -
Visual Studio Code:打開 GitHub Copilot Chat面板並輸入
@modernize-dotnet。 -
GitHub Copilot CLI:輸入
@modernize-dotnet,接著輸入您的升級或遷移請求。 -
GitHub.com:使用你倉庫中的
modernize-dotnet編碼代理程式。
-
Visual Studio:右鍵點擊 方案總管 中的解決方案或專案,選擇 Modernize。 或者,打開 GitHub Copilot Chat 視窗,輸入
告訴客服人員要升級或遷移什麼。
當你要求現代化代理升級應用程式時,Copilot 會先提示你建立一個新分支,前提是你正在使用 Git 倉庫。 接著 Copilot 會評估你的專案並執行三階段工作流程。 每個階段會在你的倉庫裡產生 Markdown 檔案 .github/upgrades/{scenarioId} ,讓你在繼續前可以先檢視接下來的內容。 如果之前嘗試已經有.github/upgrades/{scenarioId},Copilot會詢問是否繼續或重新開始。
Copilot 首先檢視您的專案結構、相依關係及程式碼模式,建立完整的評估。 該 assessment.md 檔案列出了破壞性的變更、API 相容性問題、已棄用的模式以及升級範圍。
評估結束後,Copilot 會執行以下三個階段:
Assessment: Copilot檢視您的專案結構、相依性與程式碼模式,並提出策略決策供您檢視,例如升級策略(自下而上、自上而下或同時進行)、專案升級方法、技術現代化選項及相容性處理。 Copilot 將確認決策存為
upgrade-options.md。Planning: Copilot 將評估結果及您確認的選項轉換為詳細規格。 檔案記錄
plan.md了升級策略、重構方法、相依路徑及風險緩解措施。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客戶體驗改善計畫。