Compartir a través de


Actualización de una aplicación de .NET usando GitHub Copilot para la modernización de aplicaciones

La modernización de aplicaciones con GitHub Copilot es un agente potenciado por inteligencia artificial que actualiza proyectos .NET a versiones más recientes y migra aplicaciones a Azure. Este artículo le guía a través de la actualización de las aplicaciones de .NET mediante un flujo de trabajo estructurado de tres fases: evaluación, planeación y ejecución.

El agente de modernización analiza los proyectos y las dependencias, crea documentación de actualización detallada en cada fase y ayuda con correcciones de código en todo el proceso. Admite la actualización de versiones anteriores de .NET a las más recientes, incluidas las migraciones de .NET Framework a .NET modernas.

Prerrequisitos

Configura el GitHub Copilot aplicaciones de modernización en el entorno de desarrollo antes de comenzar con una actualización. Para conocer los pasos de instalación, consulte Install GitHub Copilot app modernization.

Iniciar la actualización

Para iniciar una actualización, use el agente de modernize-dotnet en Copilot:

  1. Abra el proyecto o la solución de .NET en el entorno de desarrollo.

  2. Inicie el agente mediante uno de estos métodos:

    • Visual Studio: haga clic con el botón derecho en la solución o proyecto en Explorador de soluciones y seleccione Modernize. O abra la ventana GitHub Copilot Chat y escriba @Modernize.
    • Visual Studio Code: abra el panel GitHub Copilot Chat y escriba @modernize-dotnet.
    • GitHub Copilot CLI: escriba @modernize-dotnet seguido de la solicitud de actualización o migración.
    • GitHub.com: use el agente de codificación /modernize-dotnet en el repositorio.
  3. Dígale al agente qué actualizar o migrar.

Al iniciar la actualización, Copilot le pedirá que cree una rama si está trabajando en un repositorio de Git. Copilot luego ejecuta un flujo de trabajo de tres fases, escribiendo un archivo Markdown para cada fase en .github/upgrades en el repositorio. Si .github/upgrades ya existe a partir de un intento anterior, Copilot pregunta si desea continuar o comenzar de nuevo.

Las tres fases son:

  • Fase de evaluación - Copilot examina tu proyecto para identificar cambios disruptivos, problemas de compatibilidad y requisitos de actualización.
  • Planning stage - Copilot crea una especificación detallada que explica cómo resolver cada problema.
  • Fase de ejecución: Copilot divide el plan en tareas secuenciales y realiza la actualización.

Inicio de la evaluación y revisión de los resultados

La fase de evaluación examina la estructura del proyecto, las dependencias y los patrones de código para identificar lo que necesita cambiar. Copilot inicia automáticamente esta fase y genera un archivo assessment.md en .github/upgrades.

En la evaluación se enumeran los cambios importantes, los problemas de compatibilidad de API, los patrones en desuso y el ámbito de actualización para saber qué necesita atención. En el ejemplo siguiente se muestra parte de una evaluación de un proyecto de ASP.NET Core que se actualiza de .NET 6.0 a .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 revisar y personalizar la evaluación:

  1. Abra el archivo en .
  2. Revise los cambios disruptivos identificados y los problemas de compatibilidad.
  3. Agregue cualquier contexto o preocupación específicos del proyecto al documento.
  4. Indique a Copilot pasar a la fase de planificación.

Empezar a planear y revisar el plan

La fase de planeación convierte la evaluación en una especificación detallada que explica cómo resolver cada problema. Cuando se indica a Copilot continuar con la planeación, genera un archivo plan.md en .github/upgrades.

El plan documenta estrategias de actualización, enfoques de refactorización, rutas de actualización de dependencias y mitigaciones de riesgos. En el ejemplo siguiente se muestra parte de un plan para un proyecto 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 revisar y personalizar el plan:

  1. Abra el archivo en .

  2. Revisar las estrategias de actualización y las modificaciones de dependencias.

  3. Edite el plan para ajustar los pasos de actualización o agregue contexto si es necesario.

    Precaución

    El plan se basa en las interdependencias del proyecto. La actualización no tendrá éxito si modifica el plan de tal manera que no se pueda completar la ruta de migración. Por ejemplo, si el proyecto A depende del proyecto B y quita el proyecto B del plan de actualización, es posible que se produzca un error en la actualización del proyecto A .

  4. Indique a Copilot que pase a la fase de ejecución.

Iniciar la ejecución y ejecutar la actualización

La fase de ejecución divide el plan en tareas secuenciales y concretas con criterios de validación. Cuando se le indica a el Copilot que continúe con la ejecución, genera un archivo tasks.md en .github/upgrades.

La lista de tareas describe cada tarea y cómo Copilot valida el éxito. En el ejemplo siguiente se muestra la lista de tareas de una solución que contiene proyectos de ASP.NET Core y 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 ejecutar la actualización:

  1. Indique Copilot que inicie la actualización.
  2. Supervise el progreso revisando el archivo tasks.md mientras Copilot actualiza los estados de las tareas.
  3. Si Copilot encuentra un problema que no se puede resolver, proporcione la ayuda solicitada.
  4. Copilot aprende de los cambios y continúa la actualización.

La herramienta crea una confirmación de Git para cada parte del proceso, por lo que puede revertir fácilmente los cambios o obtener información detallada sobre lo que ha cambiado.

Comprobación de la actualización

Cuando finalice la actualización, Copilot muestra los pasos siguientes recomendados en la respuesta del chat. Revise el archivo para conocer el estado de cada paso.

La herramienta crea una confirmación de Git para cada parte del proceso de actualización, por lo que puede revertir fácilmente los cambios o obtener información detallada sobre lo que ha cambiado.

En el ejemplo siguiente se muestran las tareas completadas para una actualización del proyecto de 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 comprobar la actualización:

  1. Revise el estado final de la tarea en .
  2. Solucione las pruebas con errores o los errores de compilación.
  3. Asegúrese de que todos los paquetes NuGet actualizados son compatibles con la aplicación.
  4. Pruebe la aplicación exhaustivamente para comprobar que la actualización se ha realizado correctamente.
  5. Aplique nuevas características y mejoras disponibles en la versión actualizada de .NET.