Aracılığıyla paylaş


GitHub Copilot uygulaması modernleştirmesi ile bir .NET uygulamasını yükseltme

GitHub Copilot uygulama modernleştirmesi, Visual Studio'da .NET projelerini daha yeni sürümlere yükselten ve uygulamaları Azure'a geçiren yapay zeka destekli bir aracıdır. Bu makale yapılandırılmış üç aşamalı bir iş akışı kullanarak .NET uygulamalarınızı yükseltmede size yol gösterir: değerlendirme, planlama ve yürütme.

Modernleştirme aracısı projelerinizi ve bağımlılıklarınızı analiz eder, her aşamada ayrıntılı yükseltme belgeleri oluşturur ve işlem boyunca kod düzeltmelerine yardımcı olabilir. .NET Framework'ten modern .NET'e geçişler de dahil olmak üzere eski .NET sürümlerinden en son sürümlere yükseltmeyi destekler.

Önkoşullar

Başlamadan önce aşağıdaki gereksinimlere sahip olduğunuzdan emin olun:

Yükseltmeyi başlatma

Yükseltme başlatmak için GitHub Copilot sohbetiyle etkileşim kurarak modernizasyon aracısını başlatın:

  1. .NET projenizi veya çözümünüzü Visual Studio'da açın.

  2. Aşağıdaki yöntemlerden birini kullanarak GitHub Copilot uygulama modernleştirme aracısı'na erişin:

    Çözüm Gezgini'nde çözüme veya projeye sağ tıklayın ve Modernleştir'i seçin.

    —veya—

    GitHub Copilot Sohbet penceresini açın ve ardından yükseltme veya geçiş isteğinizi yazın@modernize.

  3. Aracıya @modernize neleri yükseltmek veya geçirmek istediğinizi söyleyin.

Yükseltmeyi başlattığınızda, Git deposunda çalışıyorsanız Copilot sizden yeni bir dal oluşturmanızı ister. Copilot, deponuzda .github/upgrades altında her aşama için bir Markdown dosyası yazarak üç aşamalı bir iş akışı yürütür. .github/upgrades Önceki bir denemeden zaten varsa, Copilot devam etmek mi yoksa yeni bir başlangıç mı yapmak isteyip istemediğinizi sorar.

Üç aşama şunlardır:

  • Değerlendirme aşaması - Copilot, hataya neden olan değişiklikleri, uyumluluk sorunlarını ve yükseltme gereksinimlerini belirlemek için projenizi inceler.
  • Planlama aşaması - Copilot, her sorunun nasıl çözüleceğini açıklayan ayrıntılı bir belirtim oluşturur.
  • Yürütme aşaması - Copilot planı sıralı görevlere böler ve yükseltmeyi gerçekleştirir.

Değerlendirmeyi başlatma ve sonuçları gözden geçirme

Değerlendirme aşaması, proje yapınızı, bağımlılıklarınızı ve kod desenlerinizi inceleyerek nelerin değiştirilmesi gerektiğini belirler. Copilot bu aşamayı otomatik olarak başlatır ve içinde assessment.mdbir .github/upgrades dosya oluşturur.

Değerlendirmede hataya neden olan değişiklikler, API uyumluluk sorunları, kullanım dışı desenler ve yükseltme kapsamı listelenir. Böylece tam olarak dikkat edilmesi gerekenleri bilirsiniz. Aşağıdaki örnek, .NET 6.0'dan .NET 9.0'a yükselten bir ASP.NET Core projesi için değerlendirmenin bir bölümünü gösterir:

# 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)

...

Planı gözden geçirmek ve özelleştirmek için:

  1. assessment.md dosyasını .github/upgrades içinde açın.
  2. Tanımlanan önemli değişiklikleri ve uyumluluk problemlerini gözden geçirin.
  3. Belgeye projeye özgü bağlamları veya endişeleri ekleyin.
  4. Copilot'a planlama aşamasına geçmelerini söyle.

Planlamaya başlayın ve planı gözden geçirin

Planlama aşaması, değerlendirmeyi her sorunun nasıl çözüleceğini açıklayan ayrıntılı bir belirtime dönüştürür. Copilot'a planlamaya geçmesini söylediğinizde, .github/upgrades içinde bir plan.md dosya oluşturur.

Plan, yükseltme stratejilerini, yeniden düzenleme yaklaşımlarını, bağımlılık yükseltme yollarını ve risk azaltmalarını belgelemektedir. Aşağıdaki örnekte bir ASP.NET Core projesi için planın bir bölümü gösterilmektedir:

# .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)

...

Planı gözden geçirmek ve özelleştirmek için:

  1. plan.md dosyasını .github/upgrades içinde açın.

  2. Yükseltme stratejilerini ve bağımlılık güncelleştirmelerini gözden geçirin.

  3. Yükseltme adımlarını ayarlamak veya gerekirse bağlam eklemek için planı düzenleyin.

    Dikkat

    Plan, proje bağımlılıklarını temel alır. Planı geçiş yolunu tamamlayamayacak şekilde değiştirirseniz yükseltme başarılı olmaz. Örneğin, A ProjesiB Projesine bağımlıysa ve B Projesini yükseltme planından kaldırırsanız, Proje A'yı yükseltme başarısız olabilir.

  4. Copilot'a yürütme aşamasına geçmelerini söyle.

Yürütmeyi başlatma ve yükseltmeyi çalıştırma

Yürütme aşaması planı doğrulama ölçütleriyle sıralı ve somut görevlere böler. Copilot'a yürütmeye devam etmesini söyleyince, .github/upgrades içinde bir tasks.md dosyası oluşturur.

Görev listesi her görevi açıklar ve Copilot'un başarılı olduğunu nasıl onayladığını açıklar. Aşağıdaki örnekte, ASP.NET Core ve WPF projelerini içeren bir çözümün görev listesi gösterilmektedir:

# 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"

Yükseltmeyi çalıştırmak için:

  1. Copilot'a yükseltmeyi başlatmasını söyleyin.
  2. Copilot görev durumlarını güncellerken tasks.md dosyasını gözden geçirerek ilerlemeyi izleyin.
  3. Copilot çözemediğiniz bir sorunla karşılaşırsa, istenen yardımı sağlayın.
  4. Copilot'un müdahalelerinizden öğrenmesine ve yükseltmeye devam etmesine izin verin.

Araç, işlemin her bölümü için bir Git işlemesi oluşturur, böylece değişiklikleri kolayca geri alabilir veya nelerin değiştiği hakkında ayrıntılı bilgi alabilirsiniz.

Yükseltmeyi doğrulama

Yükseltme tamamlandığında Copilot, işlemden sonra yapmanız gerekenler konusunda size yol göstermek için sohbet yanıtında sonraki adımları gösterir. tasks.md dosyasını her adımın durumu için gözden geçirin. Araç, yükseltme işleminin her bölümü için bir Git işlemesi oluşturur, böylece değişiklikleri kolayca geri alabilir veya nelerin değiştiği hakkında ayrıntılı bilgi alabilirsiniz.

Aşağıdaki örnekte, ASP.NET Core proje yükseltmesi için tamamlanmış görevler gösterilmektedir:

# 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**)

...

Yükseltmeyi doğrulamak için:

  1. içindeki tasks.mdson görev durumunu gözden geçirin.
  2. Başarısız olan tüm testleri veya derleme hatalarını giderin.
  3. Güncelleştirilmiş tüm NuGet paketlerinin uygulamanızla uyumlu olduğundan emin olun.
  4. Yükseltmenin başarılı olduğunu doğrulamak için uygulamanızı kapsamlı bir şekilde test edin.
  5. Yükseltilen .NET sürümünde sağlanan yeni özellikleri ve geliştirmeleri uygulayın.