Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
GitHub Copilot модернизации — это агент, на основе ИИ, который обновляет проекты .NET до более новых версий и переносит приложения в Azure. В этой статье описывается обновление приложений .NET с помощью структурированного трехэтапного рабочего процесса: оценки, планирования и выполнения.
Агент модернизации анализирует проекты и зависимости, создает подробную документацию по обновлению на каждом этапе и помогает исправить код на протяжении всего процесса. Агент поддерживает обновление с более старых версий .NET до последних версий, включая обновления .NET Framework до современных .NET.
Предпосылки
Перед началом обновления настройте GitHub Copilot в вашей среде разработки. Инструкции по установке см. в разделе Установка модернизации GitHub Copilot.
Запуск обновления
Чтобы начать обновление, используйте агент modernize-dotnet в Copilot:
Откройте проект или решение .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} в вашем репозитории. Это {scenarioId} значение является уникальным идентификатором для типа обновления, например dotnet-version-upgrade. Если .github/upgrades/{scenarioId} уже существует из предыдущей попытки, Copilot спрашивает, продолжить или начать заново.
Три этапа:
- Этап оценки. Copilot проверяет ваш проект, представляет стратегические решения для вашего рассмотрения и сохраняет подтвержденные решения. Настройте оценку перед тем как продолжить.
- Этап планирования. Copilot создает подробную спецификацию с инструкциями по достижению целевого обновления.
- Этап выполнения. Copilot разбивает план на последовательные задачи и выполняет обновление.
Проверка оценки
Оценка проверяет структуру проекта, зависимости и шаблоны кода, чтобы определить, что необходимо изменить. Copilot автоматически запускает оценку и создает файл assessment.md в .github/upgrades/{scenarioId}.
В оценке перечислены критические изменения, проблемы совместимости API, устаревшие шаблоны и область обновления. В следующем примере показана часть оценивания для проекта ASP.NET Core, обновляемого с .NET 6.0 до .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)
...
Чтобы просмотреть и настроить оценку, выполните следующие действия.
-
assessment.mdОткройте файл в.github/upgrades/{scenarioId}. - Прочтите выявленные нарушающие изменения и проблемы совместимости.
- Добавьте в документ контекст или проблемы, относящиеся к проекту.
- Сообщите Copilot перейти к этапу планирования.
Просмотр вариантов модернизации
После оценки Copilot оценивает решение и предоставляет решения по стратегии обновления для проверки. Агент рекомендует подход на основе структуры проекта и сохраняет подтвержденные решения upgrade-options.md в .github/upgrades/{scenarioId}.
Обычно к ним относятся следующие параметры:
- Стратегия обновления. Снизу вверх (сначала низкоуровневые проекты), сверху вниз (сначала приложение) или все сразу (все проекты за один раз).
- Подход к обновлению проекта. Перезапись на месте или параллельное обновление.
- Модернизация технологий. Следует ли обновлять такие технологии, как Entity Framework (EF6 до EF Core), внедрение зависимостей, ведение журнала и конфигурация.
- Управление пакетами. Следует ли применять централизованное управление пакетами.
- Обработка совместимости. Как устранить неподдерживаемые API, несовместимые пакеты и функциональные возможности для конкретной платформы.
Просмотрите предложенные варианты и подтвердите или переопределите их. Сообщите Copilot перейти к этапу планирования.
Начало планирования и проверка плана
Этап планирования преобразует оценку и подтвержденные параметры обновления в подробную спецификацию, которая объясняет, как устранить каждую проблему. Когда вы сообщаете Copilot продолжить планирование, он создает файл plan.md в .github/upgrades/{scenarioId}. Агент также создает scenario-instructions.md файл, в который хранятся настройки, решения и пользовательские инструкции по обновлению.
Документы плана отображают стратегии обновления, подходы к рефакторингу, пути обновления зависимостей и меры по снижению рисков. В следующем примере показана часть плана для проекта 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)
...
Чтобы просмотреть и настроить план, выполните следующие действия.
plan.mdОткройте файл в.github/upgrades/{scenarioId}.Просмотрите стратегии обновления и обновления зависимостей.
Измените план, чтобы изменить шаги обновления или добавить контекст по мере необходимости.
Caution
План зависит от взаимозависимостей проектов. Обновление не выполняется, если вы изменяете план таким образом, чтобы путь обновления не был завершен. Например, если Project A зависит от Project B и вы удаляете Project B из плана обновления, обновление проекта Project A может завершиться ошибкой.
Скажите Copilot перейти к этапу выполнения.
Запуск выполнения и запуск обновления
Этап выполнения разбивает план на последовательные, конкретные задачи с критериями проверки. Когда вы сообщаете Copilot продолжить выполнение, он создает файл tasks.md в .github/upgrades/{scenarioId}.
Список задач описывает каждую задачу и как Copilot подтверждает её успешность. В следующем примере показан список задач для решения, содержащего ASP.NET Core и проекты 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%) 
---
## 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"
Чтобы выполнить обновление, выполните следующие действия:
- Укажите Copilot запустить обновление.
- Отслеживайте прогресс, просматривая файл
tasks.md, поскольку Copilot обновляет статусы задач. - Если Copilot сталкивается с проблемой, которую не удается устранить, предоставьте запрашиваемую помощь.
- На основе ваших решений и изменений Copilot адаптирует свою стратегию к остальным задачам и продолжает обновление.
Copilot фиксирует изменения в соответствии со стратегией Git, настроенной во время предварительной инициализации: для каждой задачи, для каждой группы задач или в конце.
Проверка обновления
Когда обновление завершится, Copilot отображает рекомендуемые дальнейшие действия в ответе чата. Просмотрите файл tasks.md в .github/upgrades/{scenarioId} для проверки статуса каждого шага.
В следующем примере показаны завершенные задачи для обновления проекта 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%) 
---
## 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**)
...
Чтобы проверить обновление, выполните следующие действия.
- Просмотрите окончательное состояние задачи в
tasks.md. - Устранение любых ошибок неудачных тестов или ошибок компиляции.
- Убедитесь, что все обновленные пакеты NuGet совместимы с приложением.
- Тщательно протестируйте приложение, чтобы убедиться, что обновление выполнено успешно.
- Применение новых функций и улучшений, доступных в обновленной .NET версии.