Meningkatkan aplikasi .NET dengan peningkatan GitHub Copilot

peningkatan GitHub Copilot adalah agen bertenaga AI yang meningkatkan .NET proyek ke versi yang lebih baru. Artikel ini memandu Anda meningkatkan aplikasi .NET dengan alur kerja tiga tahap terstruktur: penilaian, perencanaan, dan eksekusi.

Agen menganalisis proyek dan dependensi Anda, membuat dokumentasi peningkatan terperinci di setiap tahap, dan membantu perbaikan kode sepanjang proses. Agen mendukung peningkatan dari versi .NET yang lebih lama ke yang terbaru, termasuk peningkatan dari .NET Framework ke .NET modern.

Prasyarat

Siapkan peningkatan GitHub Copilot di lingkungan pengembangan Anda sebelum memulai peningkatan. Untuk langkah-langkah penginstalan, lihat Menginstal peningkatan GitHub Copilot.

Mulai pemutakhiran

Untuk memulai peningkatan, ikuti langkah-langkah berikut:

  1. Mulai agen dengan menggunakan salah satu metode ini:

    • Visual Studio: Klik kanan solusi atau proyek di Penjelajah Solusi dan pilih Modernize. Atau, buka jendela Copilot Chat GitHub dan ketik @Modernize.
    • Visual Studio Code: Buka panel GitHub Copilot Chat dan ketik @upgrade.
    • GitHub Copilot CLI: Ketik @upgrade diikuti oleh permintaan peningkatan atau migrasi Anda.
    • GitHub aplikasi Copilot: Di pemilih Agen, pilih Upgrade.
  2. Beritahu agen apa yang harus ditingkatkan atau dimigrasikan.

Saat Anda memulai peningkatan, Copilot mengumpulkan informasi prainisialisasi: versi kerangka kerja target, strategi pencabangan Git, dan mode alur kerja (otomatis atau dipandu oleh Anda). Copilot kemudian menilai proyek Anda dan menjalankan alur kerja tiga tahap, menulis file Markdown untuk setiap tahap di bawah .github/upgrades/{scenarioId} di repositori Anda. Nilai {scenarioId} merupakan pengidentifikasi unik untuk jenis peningkatan, seperti dotnet-version-upgrade. Jika .github/upgrades/{scenarioId} sudah ada dari upaya sebelumnya, Copilot bertanya apakah akan melanjutkan atau memulai dari awal.

Tiga tahap tersebut adalah:

  • Tahap penilaian. Copilot memeriksa proyek Anda, menyajikan keputusan strategi untuk tinjauan Anda, dan menyimpan keputusan yang dikonfirmasi. Sesuaikan penilaian sebelum melanjutkan.
  • Tahap perencanaan. Copilot membuat spesifikasi terperinci dengan langkah-langkah untuk mencapai peningkatan target.
  • Tahap Pelaksanaan. Copilot memecah rencana menjadi tugas berurutan dan melakukan peningkatan.

Meninjau penilaian

Penilaian memeriksa struktur proyek, dependensi, dan pola kode Anda untuk mengidentifikasi apa yang perlu diubah. Copilot secara otomatis memulai penilaian dan menghasilkan file assessment.md di .github/upgrades/{scenarioId}.

Penilaian mencantumkan perubahan yang merusak, masalah kompatibilitas API, pola yang tidak direkomendasikan, dan cakupan peningkatan. Contoh berikut menunjukkan bagian dari penilaian untuk peningkatan proyek ASP.NET Core dari .NET 6.0 ke .NET 10.0:

# Projects and dependencies analysis

This document provides a comprehensive overview of the projects and their dependencies in the context of upgrading to .NETCoreApp,Version=v10.0.

## Table of Contents

- [Executive Summary](#executive-Summary)
  - [Highlevel Metrics](#highlevel-metrics)
  - [Projects Compatibility](#projects-compatibility)
  - [Package Compatibility](#package-compatibility)
  - [API Compatibility](#api-compatibility)
- [Aggregate NuGet packages details](#aggregate-nuget-packages-details)
- [Top API Migration Challenges](#top-api-migration-challenges)
  - [Technologies and Features](#technologies-and-features)
  - [Most Frequent API Issues](#most-frequent-api-issues)
- [Projects Relationship Graph](#projects-relationship-graph)
- [Project Details](#project-details)

  - [MvcMovie.Tests\MvcMovie.Tests.csproj](#mvcmovietestsmvcmovietestscsproj)
  - [MvcMovie\MvcMovie.csproj](#mvcmoviemvcmoviecsproj)
  - [RazorMovie.Tests\RazorMovie.Tests.csproj](#razormovietestsrazormovietestscsproj)
  - [RazorMovie\RazorMovie.csproj](#razormovierazormoviecsproj)
  - [WpfMovie.Tests\WpfMovie.Tests.csproj](#wpfmovietestswpfmovietestscsproj)
  - [WpfMovie\WpfMovie.csproj](#wpfmoviewpfmoviecsproj)

...

Untuk meninjau dan menyesuaikan penilaian:

  1. assessment.md Buka file di .github/upgrades/{scenarioId}.
  2. Tinjau perubahan yang merusak dan masalah kompatibilitas yang diidentifikasi.
  3. Tambahkan konteks atau masalah khusus proyek ke dokumen.
  4. Instruksikan Copilot melanjutkan ke tahap perencanaan.

Meninjau opsi peningkatan

Setelah penilaian, Copilot mengevaluasi solusi Anda dan menyajikan keputusan strategi peningkatan untuk tinjauan Anda. Agen merekomendasikan pendekatan berdasarkan struktur proyek Anda dan menyimpan keputusan yang dikonfirmasi ke upgrade-options.md dalam .github/upgrades/{scenarioId}.

Opsi biasanya mencakup:

  • Tingkatkan strategi. Bottom-up (proyek daun terlebih dahulu), top-down (aplikasi terlebih dahulu), atau all-at-once (semua proyek dalam satu langkah).
  • Pendekatan peningkatan proyek. Penulisan ulang di tempat atau peningkatan berdampingan.
  • Modernisasi teknologi. Apakah akan meningkatkan teknologi seperti Entity Framework (EF6 ke EF Core), injeksi dependensi, pengelogan, dan konfigurasi.
  • Manajemen paket. Apakah akan mengadopsi Central Package Management.
  • Penanganan kompatibilitas. Cara mengatasi API yang tidak didukung, paket yang tidak kompatibel, dan fungsionalitas khusus platform.

Tinjau opsi yang diusulkan, kemudian konfirmasi atau abaikan. Instruksikan Copilot melanjutkan ke tahap perencanaan.

Mulai merencanakan dan meninjau rencana

Tahap perencanaan mengonversi penilaian dan opsi peningkatan anda yang dikonfirmasi menjadi spesifikasi terperinci yang menjelaskan cara menyelesaikan setiap masalah. Ketika Anda memberi tahu Copilot untuk melanjutkan ke perencanaan, itu menghasilkan sebuah file plan.md di .github/upgrades/{scenarioId}. Agen juga membuat scenario-instructions.md file yang menyimpan preferensi, keputusan, dan instruksi kustom untuk peningkatan.

Dokumen dalam rencana mencakup strategi peningkatan, pendekatan untuk refaktorisasi, jalur pembaruan dependensi, dan mitigasi risiko. Contoh berikut menunjukkan bagian dari rencana untuk proyek ASP.NET Core:

# .NET 10 Upgrade Plan

## Table of Contents

- [Executive Summary](#executive-summary)
- [Migration Strategy](#migration-strategy)
- [Detailed Dependency Analysis](#detailed-dependency-analysis)
- [Project-by-Project Plans](#project-by-project-plans)
- ... <removed to save space> ...
- ...

---

## Executive Summary

### Scenario Description
Upgrade all projects in the MvcMovieNet6 solution from .NET 6 to .NET 10 (Long Term Support). The solution contains:
- **RazorMovie**: ASP.NET Core Razor Pages application (primary focus)
- **MvcMovie**: ASP.NET Core MVC application
- **WpfMovie**: Windows Presentation Foundation desktop application
- **3 Test Projects**: Unit test projects for each application

### Scope & Current State
- **6 projects** requiring framework upgrade (net6.0 → net10.0)
- **1,862 total lines of code** across 54 files
- **16 NuGet packages** (6 require updates, 10 compatible)
- **65 identified issues** (1 security vulnerability, 1 deprecated package, 51 WPF API issues, minor behavioral changes)
- **All projects are SDK-style** (modern project format)

...

Untuk meninjau dan menyesuaikan rencana:

  1. plan.md Buka file di .github/upgrades/{scenarioId}.

  2. Tinjau strategi peningkatan dan pembaruan dependensi.

  3. Edit rencana untuk menyesuaikan langkah-langkah peningkatan atau menambahkan konteks saat dibutuhkan.

    Caution

    Rencana tergantung pada interdependensi proyek. Peningkatan tidak berhasil jika Anda mengubah paket dengan cara yang mencegah jalur peningkatan selesai. Misalnya, jika Project A bergantung pada Project B dan Anda menghapus Project B dari paket peningkatan, meningkatkan Project A mungkin gagal.

  4. Beri tahu Copilot untuk beralih ke tahap eksekusi.

Mulai eksekusi dan jalankan peningkatan

Tahap eksekusi memecah rencana menjadi tugas konkret berurutan dengan kriteria validasi. Ketika Anda memberi tahu Copilot untuk melanjutkan tahap eksekusi, Copilot akan menghasilkan tasks.md file di .github/upgrades/{scenarioId}.

Daftar tugas menjelaskan setiap tugas dan bagaimana Copilot memvalidasi keberhasilan. Contoh berikut menunjukkan daftar tugas untuk solusi yang berisi proyek ASP.NET Core dan WPF:

# MvcMovieNet6 .NET 10 Upgrade Tasks

## Overview

This document tracks the execution of the MvcMovieNet6 solution upgrade from .NET 6 to .NET 10. All projects will be upgraded simultaneously in a single atomic operation.

**Progress**: 0/3 tasks complete (0%) ![0%](https://progress-bar.xyz/0)

---

## Tasks

### [ ] TASK-001: Verify prerequisites
**References**: Plan §Phase 0

- [ ] (1) Verify .NET 10 SDK installed per Plan §Phase 0
- [ ] (2) .NET 10 SDK meets minimum requirements (**Verify**)

---

### [ ] TASK-002: Atomic framework and package upgrade with compilation fixes
**References**: Plan §Phase 1, Plan §Package Update Reference, Plan §Breaking Changes Catalog, Plan §Project-by-Project Plans

- [ ] (1) Update TargetFramework to net10.0 in MvcMovie.csproj, MvcMovie.Tests.csproj, RazorMovie.csproj, RazorMovie.Tests.csproj per Plan §Phase 1
- [ ] (2) Update TargetFramework to net10.0-windows in WpfMovie.csproj, WpfMovie.Tests.csproj per Plan §Phase 1
- [ ] (3) All project files updated to target framework (**Verify**)
- [ ] (4) Update package references per Plan §Package Update Reference (MvcMovie: EF Core 10.0.1, Code Generation 10.0.0; RazorMovie: HtmlSanitizer 9.0.889 security fix)
- [ ] (5) All package references updated (**Verify**)
- [ ] (6) Restore all dependencies across solution
- [ ] (7) All dependencies restored successfully (**Verify**)
- [ ] (8) Build solution and fix all compilation errors per Plan §Breaking Changes Catalog (focus: BinaryFormatter removal in WpfMovie, WPF control API binary incompatibilities, UseExceptionHandler behavioral changes, HtmlSanitizer API changes)
- [ ] (9) Solution builds with 0 errors (**Verify**)
- [ ] (10) Commit changes with message: "TASK-002: Complete atomic upgrade to .NET 10 (all projects, packages, and compilation fixes)"

---

### [ ] TASK-003: Run full test suite and validate upgrade
**References**: Plan §Phase 2, Plan §Testing & Validation Strategy

- [ ] (1) Run tests in MvcMovie.Tests, RazorMovie.Tests, and WpfMovie.Tests projects
- [ ] (2) Fix any test failures (reference Plan §Breaking Changes Catalog for common issues: HtmlSanitizer behavior, BinaryFormatter replacement, framework behavioral changes)
- [ ] (3) Re-run all tests after fixes
- [ ] (4) All tests pass with 0 failures (**Verify**)
- [ ] (5) Commit test fixes with message: "TASK-003: Complete testing and validation for .NET 10 upgrade"

Untuk menjalankan peningkatan:

  1. Beri tahu Copilot untuk mulai upgrade.
  2. Pantau kemajuan dengan meninjau file tasks.md saat Copilot memperbarui status tugas.
  3. Jika Copilot mengalami masalah yang tidak dapat diatasi, berikan bantuan yang diminta.
  4. Berdasarkan keputusan dan perubahan Anda, Copilot menyesuaikan strateginya dengan tugas yang tersisa dan melanjutkan peningkatan.

Copilot menerapkan perubahan sesuai dengan strategi Git yang Anda konfigurasi selama prainisialisasi: per tugas, per grup tugas, atau di akhir.

Memverifikasi peningkatan

Setelah peningkatan selesai, Copilot menampilkan langkah berikutnya yang direkomendasikan dalam respons obrolan. Tinjau file di tasks.md untuk status setiap langkah di .github/upgrades/{scenarioId}.

Contoh berikut menunjukkan tugas yang selesai untuk peningkatan proyek ASP.NET Core:

# MvcMovieNet6 .NET 10 Upgrade Tasks

## Overview

This document tracks the execution of the MvcMovieNet6 solution upgrade from .NET 6 to .NET 10. All projects will be upgraded simultaneously in a single atomic operation.

**Progress**: 3/3 tasks complete (100%) ![0%](https://progress-bar.xyz/100)

---

## Tasks

### [✓] TASK-001: Verify prerequisites *(Completed: 2025-12-12 21:09)*
**References**: Plan §Phase 0

- [✓] (1) Verify .NET 10 SDK installed per Plan §Phase 0
- [✓] (2) .NET 10 SDK meets minimum requirements (**Verify**)

...

Untuk memverifikasi peningkatan:

  1. Tinjau status tugas akhir di tasks.md.
  2. Atasi pengujian atau kesalahan kompilasi yang gagal.
  3. Pastikan semua paket NuGet yang diperbarui kompatibel dengan aplikasi Anda.
  4. Uji aplikasi Anda secara menyeluruh untuk memverifikasi peningkatan berhasil.
  5. Terapkan fitur dan peningkatan baru yang tersedia dalam versi .NET yang ditingkatkan.