Compartilhar via


Atualizar um aplicativo .NET com a modernização do GitHub Copilot

A modernização do GitHub Copilot é um agente alimentado por IA que atualiza projetos do .NET para versões mais recentes e migra aplicativos para o Azure. Este artigo orienta você a atualizar seus aplicativos .NET usando um fluxo de trabalho estruturado de três estágios: avaliação, planejamento e execução.

O agente de modernização analisa seus projetos e dependências, cria uma documentação detalhada de atualização em cada estágio e ajuda com correções de código durante todo o processo. Ele dá suporte à atualização de versões de .NET mais antigas para as mais recentes, incluindo migrações do .NET Framework para o .NET moderno.

Pré-requisitos

Configure a modernização do GitHub Copilot em seu ambiente de desenvolvimento antes de iniciar uma atualização. Para obter as etapas de instalação, consulte Instalar a modernização do GitHub Copilot.

Iniciar a atualização

Para iniciar uma atualização, use o agente modernize-dotnet no Copilot:

  1. Abra seu .NET projeto ou solução em seu ambiente de desenvolvimento.

  2. Inicie o agente usando um destes métodos:

    • Visual Studio: clique com o botão direito do mouse na solução ou projeto em Solution Explorer e selecione Modernize. Ou abra a janela GitHub Copilot Chat e digite @Modernize.
    • Visual Studio Code: abra o painel GitHub Copilot Chat e digite @modernize-dotnet.
    • GitHub Copilot CLI: digite @modernize-dotnet seguido de sua solicitação de atualização ou migração.
    • GitHub.com: use o agente de codificação modernize-dotnet em seu repositório.
  3. Diga ao agente o que deve ser atualizado ou migrado.

Ao iniciar a atualização, Copilot solicitará que você crie uma nova ramificação se estiver trabalhando em um repositório Git. Copilot executa um fluxo de trabalho de três estágios, gravando um arquivo Markdown para cada estágio em .github/upgrades em seu repositório. Se .github/upgrades já existir de uma tentativa anterior, Copilot perguntará se deseja continuar ou iniciar novamente.

Os três estágios são:

  • Etapa de avaliação - Copilot examina seu projeto para identificar alterações de ruptura, problemas de compatibilidade e requisitos de atualização.
  • Planning stage - Copilot cria uma especificação detalhada explicando como resolver todos os problemas.
  • Execution stage - Copilot divide o plano em tarefas sequenciais e executa a atualização.

Iniciar a avaliação e examinar os resultados

A fase de avaliação examina a estrutura do projeto, as dependências e os padrões de código para identificar o que precisa ser alterado. Copilot inicia automaticamente esse estágio e gera um arquivo de assessment.md em .github/upgrades.

A avaliação lista alterações disruptivas, problemas de compatibilidade de API, padrões preteridos e o escopo de atualização, para que você possa identificar o que precisa de atenção. O exemplo a seguir mostra parte de uma avaliação de um projeto de ASP.NET Core que está atualizando do .NET 6.0 para o .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)

...

Para examinar e personalizar a avaliação:

  1. Abra o assessment.md arquivo em .github/upgrades.
  2. Examine as alterações de falha identificadas e os problemas de compatibilidade.
  3. Adicione qualquer contexto específico do projeto ou preocupações ao documento.
  4. Diga ao Copilot para avançar para a etapa de planejamento.

Iniciar o planejamento e examinar o plano

A fase de planejamento converte a avaliação em uma especificação detalhada que explica como resolver cada problema. Quando você solicita ao Copilot que prossiga com o planejamento, o sistema gera um arquivo plan.md em .github/upgrades.

O plano documenta estratégias de atualização, abordagens de refatoração, caminhos de atualização de dependência e mitigações de risco. O exemplo a seguir mostra parte de um plano para um projeto de 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)

...

Para examinar e personalizar o plano:

  1. Abra o plan.md arquivo em .github/upgrades.

  2. Examine as estratégias de atualização e as atualizações de dependência.

  3. Edite o plano para ajustar as etapas de atualização ou adicionar contexto, se necessário.

    Cuidado

    O plano é baseado em interdependências de projeto. A atualização não terá êxito se você modificar o plano de forma que o caminho de migração não possa ser concluído. Por exemplo, se o Projeto A depender do Projeto B e você remover o Projeto B do plano de atualização, a atualização do Projeto A poderá falhar.

  4. Diga ao Copilot para passar para o estágio de execução.

Iniciar a execução e executar a atualização

O estágio de execução divide o plano em tarefas sequenciais e concretas com critérios de validação. Quando você diz ao Copilot para continuar a execução, ele gera um arquivo tasks.md em .github/upgrades.

A lista de tarefas descreve cada tarefa e como Copilot valida o sucesso. O exemplo a seguir mostra a lista de tarefas para uma solução que contém projetos ASP.NET Core e 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"

Para executar a atualização:

  1. Dê o comando ao Copilot para iniciar a atualização.
  2. Monitore o progresso examinando o arquivo tasks.md à medida que Copilot atualiza os status da tarefa.
  3. Se Copilot encontrar um problema que não pode resolver, forneça a ajuda solicitada.
  4. Copilot aprende com suas alterações e continua a atualização.

A ferramenta cria uma confirmação do Git para cada parte do processo, para que você possa reverter facilmente as alterações ou obter informações detalhadas sobre o que foi alterado.

Verificar a atualização

Quando a atualização for concluída, Copilot mostrará as próximas etapas recomendadas na resposta do chat. Examine o tasks.md arquivo para obter o status de cada etapa.

A ferramenta cria uma confirmação do Git para cada parte do processo de atualização, para que você possa reverter facilmente as alterações ou obter informações detalhadas sobre o que foi alterado.

O exemplo a seguir mostra as tarefas concluídas para uma atualização de projeto 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**)

...

Para verificar a atualização:

  1. Examine o status da tarefa final em tasks.md.
  2. Resolva os testes com falha ou erros de compilação.
  3. Verifique se todos os pacotes NuGet atualizados são compatíveis com seu aplicativo.
  4. Teste seu aplicativo minuciosamente para verificar se a atualização foi bem-sucedida.
  5. Aplique novos recursos e melhorias disponíveis na versão de .NET atualizada.