From 1f08eea83c2da07badfbccd0dd44924cd6f9f9e6 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Tue, 9 Sep 2025 16:38:57 -0700 Subject: [PATCH 01/38] Test TOC --- docs/navigate/migration-guide/toc.yml | 142 ++++++++++++++------------ 1 file changed, 76 insertions(+), 66 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 93f715bca9489..2011c6cca5822 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -3,26 +3,84 @@ items: href: index.yml - name: Overview href: ../../core/porting/index.md - - name: General information + - name: App modernization expanded: true items: - - name: About .NET - items: - - name: Versioning info for .NET SDK, MSBuild, and Visual Studio - href: ../../core/porting/versioning-sdk-msbuild-vs.md - - name: Choose between .NET and .NET Framework for server apps - href: ../../standard/choosing-core-framework-server.md - - name: GitHub Copilot app modernization + - name: Overview + href: ../../core/porting/github-copilot-app-modernization-overview.md + displayName: copilot, upgrade + - name: Install + href: ../../core/porting/github-copilot-app-modernization-install.md + displayName: copilot, upgrade + - name: FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml + displayName: copilot, upgrade, faq + - name: Migrating from .NET Framework to modern .NET + expanded: false + items: + - name: General information + expanded: false items: - - name: Overview + - name: Modernize with GitHub Copilot href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade - - name: Install - href: ../../core/porting/github-copilot-app-modernization-install.md - displayName: copilot, upgrade - - name: FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml - displayName: copilot, upgrade, faq + displayName: copilot, upgrade, modernization + - name: About .NET + items: + - name: Versioning info for .NET SDK, MSBuild, and Visual Studio + href: ../../core/porting/versioning-sdk-msbuild-vs.md + - name: Choose between .NET and .NET Framework for server apps + href: ../../standard/choosing-core-framework-server.md + - name: Breaking changes + items: + - name: Overview + displayName: app compatibility + href: ../../core/porting/breaking-changes.md + - name: Breaking changes + href: ../../core/compatibility/fx-core.md + - name: Pre-migration + expanded: false + items: + - name: Assess the portability of your project + items: + - name: Unsupported dependencies + href: ../../core/porting/third-party-deps.md + - name: Use the Windows Compatibility Pack + href: ../../core/porting/windows-compat-pack.md + - name: Unavailable technologies + href: ../../core/porting/net-framework-tech-unavailable.md + - name: Unsupported APIs + items: + - name: Tools to find unsupported APIs + href: ../../core/porting/unsupported-apis.md + - name: Unsupported API list + href: ../../core/compatibility/unsupported-apis.md + - name: Needed changes before porting code + href: ../../core/porting/premigration-needed-changes.md + - name: Migration + expanded: false + items: + - name: Create a porting plan + items: + - name: Approaches + href: ../../core/porting/porting-approaches.md + - name: Project structure + href: ../../core/porting/project-structure.md + - name: Application porting guides + items: + - name: Windows Forms + href: /dotnet/desktop/winforms/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Windows Presentation Foundation + href: /dotnet/desktop/wpf/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: C++/CLI projects + href: ../../core/porting/cpp-cli.md + - name: Post-migration + expanded: false + items: + - name: Modernize + href: ../../core/porting/modernize.md + - name: Other tools + expanded: false + items: - name: .NET Upgrade Assistant tool items: - name: Overview @@ -35,7 +93,7 @@ items: href: ../../core/porting/upgrade-assistant-how-to-upgrade.md displayName: upgrade assistant - name: Analyze - expanded: true + expanded: false items: - name: Overview href: ../../core/porting/upgrade-assistant-analyze-overview.md @@ -44,7 +102,7 @@ items: href: ../../core/porting/upgrade-assistant-how-to-analyze.md displayName: upgrade assistant - name: Project upgrade guide - expanded: true + expanded: false items: - name: ASP.NET href: /aspnet/core/migration/fx-to-core/tooling @@ -58,51 +116,3 @@ items: href: ../../core/porting/upgrade-assistant-wcf.md - name: Telemetry href: ../../core/porting/upgrade-assistant-telemetry.md - - name: Breaking changes - items: - - name: Overview - displayName: app compatibility - href: ../../core/porting/breaking-changes.md - - name: Breaking changes - href: ../../core/compatibility/fx-core.md - - name: Pre-migration - expanded: true - items: - - name: Assess the portability of your project - items: - - name: Unsupported dependencies - href: ../../core/porting/third-party-deps.md - - name: Use the Windows Compatibility Pack - href: ../../core/porting/windows-compat-pack.md - - name: Unavailable technologies - href: ../../core/porting/net-framework-tech-unavailable.md - - name: Unsupported APIs - items: - - name: Tools to find unsupported APIs - href: ../../core/porting/unsupported-apis.md - - name: Unsupported API list - href: ../../core/compatibility/unsupported-apis.md - - name: Needed changes before porting code - href: ../../core/porting/premigration-needed-changes.md - - name: Migration - expanded: true - items: - - name: Create a porting plan - items: - - name: Approaches - href: ../../core/porting/porting-approaches.md - - name: Project structure - href: ../../core/porting/project-structure.md - - name: Application porting guides - items: - - name: Windows Forms - href: /dotnet/desktop/winforms/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: Windows Presentation Foundation - href: /dotnet/desktop/wpf/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: C++/CLI projects - href: ../../core/porting/cpp-cli.md - - name: Post-migration - expanded: true - items: - - name: Modernize - href: ../../core/porting/modernize.md From cab1ad3d1399ca4bb640caa68a31f32ca9c6ad47 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Tue, 9 Sep 2025 17:33:38 -0700 Subject: [PATCH 02/38] More adjustments --- docs/navigate/migration-guide/toc.yml | 28 +++++++++++---------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 2011c6cca5822..60b05810d7f3e 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -1,29 +1,23 @@ items: - name: .NET migration guide href: index.yml - - name: Overview - href: ../../core/porting/index.md - - name: App modernization - expanded: true - items: - - name: Overview - href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade - - name: Install - href: ../../core/porting/github-copilot-app-modernization-install.md - displayName: copilot, upgrade - - name: FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml - displayName: copilot, upgrade, faq + - name: Upgrade and modernize .NET apps + href: ../../core/porting/github-copilot-app-modernization-overview.md + displayName: copilot, upgrade + - name: GitHub Copilot FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml + displayName: copilot, upgrade, faq - name: Migrating from .NET Framework to modern .NET expanded: false items: + - name: Overview + href: ../../core/porting/index.md + - name: Migrate with GitHub Copilot + href: ../../core/porting/github-copilot-app-modernization-overview.md + displayName: copilot, upgrade, modernization - name: General information expanded: false items: - - name: Modernize with GitHub Copilot - href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade, modernization - name: About .NET items: - name: Versioning info for .NET SDK, MSBuild, and Visual Studio From e8bbed97d7298d105ced547b40186c79534843cf Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Wed, 10 Sep 2025 10:32:56 -0700 Subject: [PATCH 03/38] changes --- docs/navigate/migration-guide/toc.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 60b05810d7f3e..e5e541b9c762b 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -1,5 +1,5 @@ items: - - name: .NET migration guide + - name: .NET upgrade guide href: index.yml - name: Upgrade and modernize .NET apps href: ../../core/porting/github-copilot-app-modernization-overview.md @@ -7,16 +7,16 @@ items: - name: GitHub Copilot FAQ href: ../../core/porting/github-copilot-app-modernization-faq.yml displayName: copilot, upgrade, faq - - name: Migrating from .NET Framework to modern .NET - expanded: false + - name: Upgrade Strategy for .NET Framework + expanded: true items: - name: Overview href: ../../core/porting/index.md - - name: Migrate with GitHub Copilot + - name: Upgrade with GitHub Copilot href: ../../core/porting/github-copilot-app-modernization-overview.md displayName: copilot, upgrade, modernization - name: General information - expanded: false + expanded: true items: - name: About .NET items: From 2ef40ab7efdcb0db41aba27eaa76e11411101a81 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Wed, 10 Sep 2025 10:33:40 -0700 Subject: [PATCH 04/38] Moar --- docs/navigate/migration-guide/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index e5e541b9c762b..1a41d5855985a 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -4,7 +4,7 @@ items: - name: Upgrade and modernize .NET apps href: ../../core/porting/github-copilot-app-modernization-overview.md displayName: copilot, upgrade - - name: GitHub Copilot FAQ + - name: Upgrade with GitHub Copilot FAQ href: ../../core/porting/github-copilot-app-modernization-faq.yml displayName: copilot, upgrade, faq - name: Upgrade Strategy for .NET Framework From 3cfc29059825a5d7178a211d35fe66d3c26b9034 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Wed, 10 Sep 2025 13:52:44 -0700 Subject: [PATCH 05/38] restructure --- docs/navigate/migration-guide/toc.yml | 200 ++++++++++++++------------ 1 file changed, 109 insertions(+), 91 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 1a41d5855985a..417d2e1db0f69 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -1,112 +1,130 @@ items: - name: .NET upgrade guide href: index.yml - - name: Upgrade and modernize .NET apps - href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade - - name: Upgrade with GitHub Copilot FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml - displayName: copilot, upgrade, faq - - name: Upgrade Strategy for .NET Framework + + - name: Upgrade .NET apps expanded: true items: - name: Overview - href: ../../core/porting/index.md - - name: Upgrade with GitHub Copilot href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade, modernization - - name: General information + displayName: copilot, upgrade + - name: Upgrade with GitHub Copilot FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml + displayName: copilot, upgrade, faq + - name: Planning your .NET Framework upgrade expanded: true items: - - name: About .NET - items: - - name: Versioning info for .NET SDK, MSBuild, and Visual Studio - href: ../../core/porting/versioning-sdk-msbuild-vs.md - - name: Choose between .NET and .NET Framework for server apps - href: ../../standard/choosing-core-framework-server.md - - name: Breaking changes + - name: Overview + href: ../../core/porting/index.md + - name: Upgrade with GitHub Copilot + href: ../../core/porting/github-copilot-app-modernization-overview.md + displayName: copilot, upgrade, modernization + - name: General information + expanded: true items: - - name: Overview - displayName: app compatibility - href: ../../core/porting/breaking-changes.md + - name: About .NET + items: + - name: Versioning info for .NET SDK, MSBuild, and Visual Studio + href: ../../core/porting/versioning-sdk-msbuild-vs.md + - name: Choose between .NET and .NET Framework for server apps + href: ../../standard/choosing-core-framework-server.md - name: Breaking changes - href: ../../core/compatibility/fx-core.md - - name: Pre-migration - expanded: false - items: - - name: Assess the portability of your project + items: + - name: Overview + displayName: app compatibility + href: ../../core/porting/breaking-changes.md + - name: Breaking changes + href: ../../core/compatibility/fx-core.md + - name: Pre-upgrade + expanded: false items: - - name: Unsupported dependencies - href: ../../core/porting/third-party-deps.md - - name: Use the Windows Compatibility Pack - href: ../../core/porting/windows-compat-pack.md - - name: Unavailable technologies - href: ../../core/porting/net-framework-tech-unavailable.md - - name: Unsupported APIs + - name: Assess the portability of your project items: - - name: Tools to find unsupported APIs - href: ../../core/porting/unsupported-apis.md - - name: Unsupported API list - href: ../../core/compatibility/unsupported-apis.md - - name: Needed changes before porting code - href: ../../core/porting/premigration-needed-changes.md - - name: Migration - expanded: false - items: - - name: Create a porting plan + - name: Unsupported dependencies + href: ../../core/porting/third-party-deps.md + - name: Use the Windows Compatibility Pack + href: ../../core/porting/windows-compat-pack.md + - name: Unavailable technologies + href: ../../core/porting/net-framework-tech-unavailable.md + - name: Unsupported APIs + items: + - name: Tools to find unsupported APIs + href: ../../core/porting/unsupported-apis.md + - name: Unsupported API list + href: ../../core/compatibility/unsupported-apis.md + - name: Needed changes before porting code + href: ../../core/porting/premigration-needed-changes.md + - name: Upgrade + expanded: false items: - - name: Approaches - href: ../../core/porting/porting-approaches.md - - name: Project structure - href: ../../core/porting/project-structure.md - - name: Application porting guides + - name: Create a porting plan + items: + - name: Approaches + href: ../../core/porting/porting-approaches.md + - name: Project structure + href: ../../core/porting/project-structure.md + - name: Application porting guides + items: + - name: Windows Forms + href: /dotnet/desktop/winforms/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Windows Presentation Foundation + href: /dotnet/desktop/wpf/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: C++/CLI projects + href: ../../core/porting/cpp-cli.md + - name: Post-Upgrade + expanded: false items: - - name: Windows Forms - href: /dotnet/desktop/winforms/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: Windows Presentation Foundation - href: /dotnet/desktop/wpf/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: C++/CLI projects - href: ../../core/porting/cpp-cli.md - - name: Post-migration + - name: Modernize + href: ../../core/porting/modernize.md + - name: Other tools expanded: false items: - - name: Modernize - href: ../../core/porting/modernize.md - - name: Other tools - expanded: false - items: - - name: .NET Upgrade Assistant tool - items: - - name: Overview - href: ../../core/porting/upgrade-assistant-overview.md - displayName: upgrade assistant - - name: Install - href: ../../core/porting/upgrade-assistant-install.md - displayName: upgrade assistant - - name: How to upgrade - href: ../../core/porting/upgrade-assistant-how-to-upgrade.md - displayName: upgrade assistant - - name: Analyze - expanded: false + - name: .NET Upgrade Assistant tool items: - name: Overview - href: ../../core/porting/upgrade-assistant-analyze-overview.md + href: ../../core/porting/upgrade-assistant-overview.md displayName: upgrade assistant - - name: How to analyze a project - href: ../../core/porting/upgrade-assistant-how-to-analyze.md + - name: Install + href: ../../core/porting/upgrade-assistant-install.md displayName: upgrade assistant - - name: Project upgrade guide - expanded: false - items: - - name: ASP.NET - href: /aspnet/core/migration/fx-to-core/tooling - - name: Windows Presentation Foundation - href: /dotnet/desktop/wpf/migration/ - - name: Windows Forms - href: /dotnet/desktop/winforms/migration/ - - name: Universal Windows Platform - href: /windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/upgrade-assistant - - name: Windows Communication Foundation - href: ../../core/porting/upgrade-assistant-wcf.md - - name: Telemetry - href: ../../core/porting/upgrade-assistant-telemetry.md + - name: How to upgrade + href: ../../core/porting/upgrade-assistant-how-to-upgrade.md + displayName: upgrade assistant + - name: Analyze + expanded: false + items: + - name: Overview + href: ../../core/porting/upgrade-assistant-analyze-overview.md + displayName: upgrade assistant + - name: How to analyze a project + href: ../../core/porting/upgrade-assistant-how-to-analyze.md + displayName: upgrade assistant + - name: Project upgrade guide + expanded: false + items: + - name: ASP.NET + href: /aspnet/core/migration/fx-to-core/tooling + - name: Windows Presentation Foundation + href: /dotnet/desktop/wpf/migration/ + - name: Windows Forms + href: /dotnet/desktop/winforms/migration/ + - name: Universal Windows Platform + href: /windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/upgrade-assistant + - name: Windows Communication Foundation + href: ../../core/porting/upgrade-assistant-wcf.md + - name: Telemetry + href: ../../core/porting/upgrade-assistant-telemetry.md + + - name: Migrate .NET apps to Azure + expanded: true + items: + - name: Overview + href: /dotnet/azure/migration/appmod/overview?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json + - name: FAQ + href: /dotnet/azure/migration/appmod/faq?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json + - name: Predefined tasks + href: /dotnet/azure/migration/appmod/predefined-tasks?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json + - name: "Quickstart: Assess and migrate a .NET project" + href: /dotnet/azure/migration/appmod/quickstart?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json + - name: Migration sample + href: /dotnet/azure/migration/appmod/sample?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json \ No newline at end of file From f06a1484944139144153fb24c38419c143fecd96 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Wed, 10 Sep 2025 14:22:35 -0700 Subject: [PATCH 06/38] alter toc/bread --- docs/navigate/migration-guide/toc.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 417d2e1db0f69..543f444138373 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -119,12 +119,12 @@ items: expanded: true items: - name: Overview - href: /dotnet/azure/migration/appmod/overview?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json + href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: FAQ - href: /dotnet/azure/migration/appmod/faq?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json + href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Predefined tasks - href: /dotnet/azure/migration/appmod/predefined-tasks?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json + href: /dotnet/azure/migration/appmod/predefined-tasks?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: "Quickstart: Assess and migrate a .NET project" - href: /dotnet/azure/migration/appmod/quickstart?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json + href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample - href: /dotnet/azure/migration/appmod/sample?toc=/azure/developer/github-copilot-app-modernization/toc.json&bc=/azure/developer/github-copilot-app-modernization/breadcrumb/toc.json \ No newline at end of file + href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json \ No newline at end of file From 631cd8f14d6ace36526cc43b299cf362b0bc2d12 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Wed, 10 Sep 2025 14:37:49 -0700 Subject: [PATCH 07/38] minor --- docs/navigate/migration-guide/toc.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 543f444138373..c301f3c0e07c0 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -20,7 +20,6 @@ items: href: ../../core/porting/github-copilot-app-modernization-overview.md displayName: copilot, upgrade, modernization - name: General information - expanded: true items: - name: About .NET items: @@ -127,4 +126,4 @@ items: - name: "Quickstart: Assess and migrate a .NET project" href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample - href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json \ No newline at end of file + href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json From d76e678348f05e8d57b75ca0643f1b6c227f9aff Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Fri, 12 Sep 2025 13:49:23 -0700 Subject: [PATCH 08/38] Start rewriting intros --- docs/core/porting/framework-overview.md | 223 +++++++++++++++++ ...ithub-copilot-app-modernization-install.md | 5 +- ...thub-copilot-app-modernization-overview.md | 68 +++--- docs/core/porting/index.md | 230 ++---------------- docs/navigate/migration-guide/toc.yml | 6 +- 5 files changed, 294 insertions(+), 238 deletions(-) create mode 100644 docs/core/porting/framework-overview.md diff --git a/docs/core/porting/framework-overview.md b/docs/core/porting/framework-overview.md new file mode 100644 index 0000000000000..a47db7fd68ce7 --- /dev/null +++ b/docs/core/porting/framework-overview.md @@ -0,0 +1,223 @@ +--- +title: Port from .NET Framework to .NET +description: Understand the porting process and discover tools you might find helpful when porting a .NET Framework project to .NET. +author: adegeo +ms.date: 06/03/2025 +ms.custom: devdivchpfy22, updateeachrelease +no-loc: ["package.config", PackageReference] +--- +# Overview of porting from .NET Framework to .NET + +This article provides an overview of what you should consider when porting your code from .NET Framework to .NET (formerly named .NET Core). Porting to .NET from .NET Framework is relatively straightforward for many projects. The complexity of your projects dictates how much work you'll need to do after the initial migration of the project files. + +Projects where the app model is available in .NET, such as libraries, console apps, and desktop apps, usually require little change. Projects that require a new app model, such as moving to [ASP.NET Core from ASP.NET](/aspnet/core/migration/proper-to-2x/), require more work. Many patterns from the old app model have equivalents that can be used during the conversion. + +## Windows desktop technologies + +Many applications created for .NET Framework use a desktop technology such as Windows Forms or Windows Presentation Foundation (WPF). Both Windows Forms and WPF are available in .NET, but they remain Windows-only technologies. + +Consider the following dependencies before you migrate a Windows Forms or WPF application: + +- Project files for .NET use a different format than .NET Framework. +- Your project might use an API that isn't available in .NET. +- Third-party controls and libraries might not have been ported to .NET and remain only available to .NET Framework. +- Your project uses a [technology that is no longer available](net-framework-tech-unavailable.md) in .NET. + +.NET uses the open-source versions of Windows Forms and WPF and includes enhancements over .NET Framework. + +For tutorials on migrating your desktop application to .NET, see one of the following articles: + +- [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/) +- [Migrate .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/) + +## Windows-specific APIs + +Applications can still P/Invoke native libraries on platforms supported by .NET. This technology isn't limited to Windows. However, if the library you're referencing is Windows-specific, such as a _user32.dll_ or _kernel32.dll_, then the code only works on Windows. For each platform you want your app to run on, you have to either find platform-specific versions, or make your code generic enough to run on all platforms. + +When you're porting an application from .NET Framework to .NET, your application probably used a library provided by .NET Framework. Many APIs that were available in .NET Framework weren't ported to .NET because they relied on Windows-specific technology, such as the Windows Registry or the GDI+ drawing model. + +The **Windows Compatibility Pack** provides a large portion of the .NET Framework API surface to .NET and is provided via the [Microsoft.Windows.Compatibility NuGet package](https://www.nuget.org/packages/Microsoft.Windows.Compatibility). + +For more information, see [Use the Windows Compatibility Pack to port code to .NET](windows-compat-pack.md). + +## .NET Framework compatibility mode + +The .NET Framework compatibility mode was introduced in .NET Standard 2.0. The compatibility mode allows .NET Standard and .NET projects to reference .NET Framework libraries as if they were compiled for the project's target framework. However, some .NET implementations might support a larger chunk of .NET Framework than others. For example, .NET Core 3.0 extends the .NET Framework compatibility mode to Windows Forms and WPF. Referencing .NET Framework libraries doesn't work for all projects, such as if the library uses WPF APIs, but it does unblock many porting scenarios. For more information, see the [Analyze your dependencies to port code from .NET Framework to .NET](third-party-deps.md#net-framework-compatibility-mode). + +Referencing .NET Framework libraries doesn't work in all cases, as it depends on which .NET Framework APIs were used and whether or not these APIs are supported by the project's target framework. Also, some of the .NET Framework APIs will only work on Windows. The .NET Framework compatibility mode unblocks many porting scenarios but you should test your projects to ensure that they also work at runtime. For more information, see the [Analyze your dependencies to port code from .NET Framework to](third-party-deps.md#net-framework-compatibility-mode). + +## Target framework changes in SDK-style projects + +As previously mentioned, the project files for .NET use a different format than .NET Framework, known as the SDK-style project format. Even if you're not moving from .NET Framework to .NET, you should still upgrade the project file to the latest format. The way to specify a target framework is different in SDK-style projects. In .NET Framework, the `` property is used with a moniker that specifies the version of .NET Framework. For example, .NET Framework 4.7.2 looks like the following snippet: + +```xml + + v4.7.2 + +``` + +An SDK-style project uses a different property to identify the target framework, the `` property. When targeting .NET Framework, the moniker starts with `net` and ends with the version of .NET Framework without any periods. For example, the moniker to target .NET Framework 4.7.2 is `net472`: + +```xml + + net472 + +``` + +For a list of all target monikers, see [Target frameworks in SDK-style projects](../../standard/frameworks.md#supported-target-frameworks). + +## Unavailable technologies + +There are a few technologies in .NET Framework that don't exist in .NET: + +- [Application domains](net-framework-tech-unavailable.md#application-domains) + + Creating additional application domains isn't supported. For code isolation, use separate processes or containers as an alternative. + +- [Remoting](net-framework-tech-unavailable.md#remoting) + + Remoting is used for communicating across application domains, which are no longer supported. For simple communication across processes, consider inter-process communication (IPC) mechanisms as an alternative to remoting, such as the class or the class. For more complex scenarios, consider frameworks such as [StreamJsonRpc](https://github.com/microsoft/vs-streamjsonrpc) or [ASP.NET Core](/aspnet/core) (either using [gRPC](/aspnet/core/grpc) or [RESTful Web API services](/aspnet/core/web-api)). + + Because remoting isn't supported, calls to `BeginInvoke()` and `EndInvoke()` on delegate objects will throw `PlatformNotSupportedException`. + +- [Code access security (CAS)](net-framework-tech-unavailable.md#code-access-security-cas) + + CAS was a sandboxing technique supported by .NET Framework but deprecated in .NET Framework 4.0. It was replaced by Security Transparency and it isn't supported in .NET. Instead, use security boundaries provided by the operating system, such as virtualization, containers, or user accounts. + +- [Security transparency](net-framework-tech-unavailable.md#security-transparency) + + Similar to CAS, the security transparency sandboxing technique is no longer recommended for .NET Framework applications and it isn't supported in .NET. Instead, use security boundaries provided by the operating system, such as virtualization, containers, or user accounts. + +- + + (COM+) isn't supported in .NET. + +- Windows Workflow Foundation (WF) + + WF isn't supported in .NET. For an alternative, see [CoreWF](https://github.com/UiPath/corewf). + +For more information about these unsupported technologies, see [.NET Framework technologies unavailable on .NET 6+](net-framework-tech-unavailable.md). + +## Cross-platform + +.NET (formerly known as .NET Core) is designed to be cross-platform. If your code doesn't depend on Windows-specific technologies, it can run on other platforms such as macOS, Linux, and Android. Such code includes project types like: + +- Libraries +- Console-based tools +- Automation +- ASP.NET sites + +.NET Framework is a Windows-only component. When your code uses Windows-specific technologies or APIs, such as Windows Forms and WPF, the code can still run on .NET but it doesn't run on other operating systems. + +It's possible that your library or console-based application can be used cross-platform without changing much. When you're porting to .NET, you might want to take this into consideration and test your application on other platforms. + +## The future of .NET Standard + +.NET Standard is a formal specification of .NET APIs that are available on multiple .NET implementations. The motivation behind .NET Standard was to establish greater uniformity in the .NET ecosystem. Starting with .NET 5, a different approach to establishing uniformity has been adopted, and this new approach eliminates the need for .NET Standard in many scenarios. For more information, see [.NET 5+ and .NET Standard](../../standard/net-standard.md#net-5-and-net-standard). + +.NET Standard 2.0 was the last version to support .NET Framework. + +## Tools to assist porting + +Instead of manually porting an application from .NET Framework to .NET, you can use different tools to help automate some aspects of the migration. Porting a complex project is, in itself, a complex process. The tools might help in that journey. + +Even if you use a tool to help port your application, you should review the [Considerations when porting section](#considerations-when-porting) in this article. + +### GitHub Copilot App Modernization – Upgrade for .NET + +[GitHub Copilot App Modernization – Upgrade for .NET](github-copilot-app-modernization-overview.md) is a Visual Studio extension that helps you upgrade projects to newer versions of .NET, update dependencies, and apply code fixes. It leverages GitHub Copilot to provide an interactive upgrade experience. + +This tool supports the following upgrade paths: + +- Upgrade projects from .NET Core to .NET. +- Upgrade projects from older versions of .NET to the latest. +- Modernize your code base. + +**When to use:** + +Use GitHub Copilot App Modernization – Upgrade for .NET for scenarios where you want to upgrade your .NET project code and dependencies to newer versions of .NET using an AI-powered tool. + +### GitHub Copilot app modernization for .NET + +GitHub Copilot app modernization for .NET (Preview) helps you migrate .NET applications to Azure efficiently and confidently. Powered by GitHub Copilot and [Application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md), it guides you through assessment, solution recommendations, code fixes, and validation—all within a single tool. + +With this assistant, you can: + +- Assess your application's code, configuration, and dependencies. +- Plan and set up the right Azure resources. +- Fix issues and apply best practices for cloud migration. +- Validate that your app builds and tests successfully. + +For more details, see the [GitHub Copilot app modernization for .NET overview](upgrade-assistant-overview.md). + +**When to use:** + +Use the GitHub Copilot app modernization for .NET (Preview) experience for scenarios where you need end to end assessment, planning, and remediation for migrating your .NET apps to Azure. + +### Application and Code Assessment for .NET + +[Azure Migrate application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md) provides code and application analysis, along with recommendations for planning cloud deployments. It helps you confidently run business-critical solutions in the cloud by offering a developer-focused assessment of your source code. The tool also provides recommendations and examples to optimize code and configurations for Azure, following industry best practices. + +This tool is also used by the GitHub Copilot app modernization for .NET experience. + +**When to use:** + +Use the Azure Migrate application and code assessment for .NET toolset for an assessment of and recommendations for migrating an existing code base to Azure. The Azure Migrate application and code assessment is essentially a subset of the GitHub Copilot app modernization for .NET experience. + +### .NET Upgrade Assistant + +The [.NET Upgrade Assistant](upgrade-assistant-overview.md) is a command-line tool that can be run on different kinds of .NET Framework apps. It's designed to assist with upgrading .NET Framework apps to .NET. After running the tool, **in most cases the app will require more effort to complete the migration**. The tool includes the installation of analyzers that can assist with completing the migration. This tool works on the following types of .NET Framework applications: + +- Windows Forms +- WPF +- ASP.NET MVC +- Console +- Class libraries + +This tool uses the other tools listed in this article, such as **try-convert**, and guides the migration process. For more information about the tool, see [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md). + +**When to use:** + +Use .NET Upgrade Assistant to upgrade .NET Framework apps to newer versions of .NET. This tool provides an alternative to the AI powered GitHub Copilot App Modernization – Upgrade for .NET experience. + +### `try-convert` + +The `try-convert` tool is a .NET global tool that can convert a project or entire solution to the .NET SDK, including moving desktop apps to .NET. However, this tool isn't recommended if your project has a complicated build process such as custom tasks, targets, or imports. + +For more information, see the [`try-convert` GitHub repository](https://github.com/dotnet/try-convert). + +### Platform compatibility analyzer + +The [Platform compatibility analyzer](../../standard/analyzers/platform-compat-analyzer.md) analyzes whether or not you're using an API that throws a at run time. Although finding one of these APIs is unlikely if you're moving from .NET Framework 4.7.2 or higher, it's good to check. For more information about APIs that throw exceptions on .NET, see [APIs that always throw exceptions on .NET Core](../compatibility/unsupported-apis.md). + +For more information, see [Platform compatibility analyzer](../../standard/analyzers/platform-compat-analyzer.md). + +## Considerations when porting + +When porting your application to .NET, consider the following suggestions in order: + +✔️ CONSIDER using the [.NET Upgrade Assistant](upgrade-assistant-overview.md) to migrate your projects. Even though this tool is in preview, it automates most of the manual steps detailed in this article and gives you a great starting point for continuing your migration path. + +✔️ CONSIDER examining your dependencies first. Your dependencies must target .NET, .NET Standard, or .NET Core. + +✔️ DO migrate from a NuGet _packages.config_ file to [PackageReference](/nuget/consume-packages/package-references-in-project-files) settings in the project file. Use Visual Studio to [convert the _package.config_ file](/nuget/consume-packages/migrate-packages-config-to-package-reference#migration-steps). + +✔️ CONSIDER upgrading to the latest project file format even if you can't yet port your app. .NET Framework projects use an outdated project format. Even though the latest project format, known as SDK-style projects, was created for .NET Core and beyond, the format also works with .NET Framework. Having your project file in the latest format gives you a good basis for porting your app in the future. + +✔️ DO retarget your .NET Framework project to at least .NET Framework 4.7.2. This ensures the availability of the latest API alternatives for cases where .NET Standard doesn't support existing APIs. + +✔️ CONSIDER targeting .NET 8, which is a long-term support (LTS) release. + +✔️ DO target .NET 6+ for **Windows Forms and WPF** projects. .NET 6 and later versions contain many improvements for Desktop apps. + +✔️ CONSIDER targeting .NET Standard 2.0 if you're migrating a library that might also be used with .NET Framework projects. You can also multitarget your library, targeting both .NET Framework and .NET Standard. + +✔️ DO add reference to the [Microsoft.Windows.Compatibility NuGet package](https://www.nuget.org/packages/Microsoft.Windows.Compatibility) if, after migrating, you get errors of missing APIs. A large portion of the .NET Framework API surface is available to .NET via the NuGet package. + +## See also + +- [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md) +- [ASP.NET to ASP.NET Core migration](/aspnet/core/migration/proper-to-2x) +- [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/) +- [Migrate .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/) +- [.NET 5 vs. .NET Framework for server apps](../../standard/choosing-core-framework-server.md) diff --git a/docs/core/porting/github-copilot-app-modernization-install.md b/docs/core/porting/github-copilot-app-modernization-install.md index c07bc5aeb1504..fd3303b3ed26c 100644 --- a/docs/core/porting/github-copilot-app-modernization-install.md +++ b/docs/core/porting/github-copilot-app-modernization-install.md @@ -15,10 +15,13 @@ ms.date: 09/04/2025 This article guides you through installing GitHub Copilot app modernization - upgrade for .NET extension in Visual Studio. +> [!IMPORTANT] +> The GitHib Copilot Modernization agent is included in Visual Studio, starting with versions Visual Studio 2022 17.14.16 and Visual Studio 2026. + ## Prerequisites - Windows operating system -- [Visual Studio 2022 version 17.14 or newer](https://visualstudio.microsoft.com/downloads/) +- [Visual Studio 2022 version 17.14.15 or earlier](https://visualstudio.microsoft.com/downloads/) - [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components) While not required to _install_ the extension, to use the extension you must [sign in to Visual Studio using a GitHub account](/visualstudio/ide/work-with-github-accounts) with [Copilot access](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot). diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 0fc522bd3767f..6ba2aa6904fcc 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -1,6 +1,6 @@ --- -title: GitHub Copilot app modernization - upgrade for .NET overview -description: "Learn more about GitHub Copilot app modernization - upgrade for .NET. This Visual Studio extension helps you upgrade your code and projects. Upgrades can include .NET versioning or migrating code from one technology to another." +title: GitHub Copilot app modernization overview +description: "Learn more about GitHub Copilot app modernization. This Visual Studio extension helps you upgrade your code and projects. Upgrades can include .NET versioning or migrating code from one technology to another." titleSuffix: "" author: adegeo ms.author: adegeo @@ -11,17 +11,33 @@ ms.date: 09/04/2025 --- -# What is GitHub Copilot app modernization - upgrade for .NET? +# What is GitHub Copilot app modernization -GitHub Copilot app modernization - upgrade for .NET is a powerful Visual Studio extension that works with you to upgrade projects to newer versions of .NET, upgrade your dependencies, and apply code fixes. +GitHub Copilot app modernization helps you upgrade projects to newer versions of .NET and migrate .NET applications to Azure quickly and confidently by guiding you through assessment, solution recommendations, code fixes, and validation - all within Visual Studio. -GitHub Copilot app modernization is distributed as a Visual Studio extension, and is an interactive upgrade process. +This process streamlines modernization and boosts developer productivity and confidence. GitHub Copilot app modernization for .NET is an all-in-one upgrade and migration assistant that uses AI to improve developer velocity, quality, and results. + +With this assistant, you can: + +- Upgrade to a newer version of .NET +- Assess your application's code, configuration, and dependencies. +- Upgrade projects from older versions of .NET to the latest. +- Migrate technolgies your app depends on to Azure +- Plan and set up the right Azure resource +- Fix issues and apply best practices for cloud migration +- Validate that your app builds and tests successfully ## Prerequisites - Windows Operating System -- [Visual Studio 2022 version 17.14 or newer](https://visualstudio.microsoft.com/downloads/). +- [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/)—or—[Visual Studio 2026 Insiders Preview 2 or newer](https://visualstudio.microsoft.com/insiders) - [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components). + + Enable the following optional components: + + - GitHub Copilot + - GitHub Copilot app modernization for .NET + - [Sign in to Visual Studio using a GitHub account](/visualstudio/ide/work-with-github-accounts) with [Copilot access](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot). Supported subscription plans: @@ -31,13 +47,9 @@ GitHub Copilot app modernization is distributed as a Visual Studio extension, an - Copilot Business - Copilot Enterprise -(If you change subscriptions, you must restart Visual Studio.) + (If you change subscriptions, you must restart Visual Studio.) -- Code must be in a local Git repository. - Code must be written in C#. -- Optional but recommended: Use **GitHub Copilot agent mode** for the upgrade process. For more information, see [Use Copilot agent mode in Visual Studio](/visualstudio/ide/copilot-agent-mode?view=vs-2022&preserve-view=true). - -For installation instructions, see [Install GitHub Copilot app modernization - upgrade for .NET](github-copilot-app-modernization-install.md). ## Supported project types @@ -63,16 +75,13 @@ The following upgrade paths are supported: The first step to upgrading is generating a plan by interacting with GitHub Copilot. There are two ways to get Copilot to use the tool: -- Right-click on the solution or project and select **Upgrade with GitHub Copilot**. +- Right-click on the solution or project and select **Modernize**. - —or— + ..TODO: IMAGE.. -- [Enable GitHub Copilot agent mode](/visualstudio/ide/copilot-agent-mode?view=vs-2022&preserve-view=true), and ask a new Copilot chat to upgrade the solution or project. + —or— - > [!IMPORTANT] - > After enabling GitHub Copilot agent mode, set the chat mode to **Agent** and enable the **upgrade_start** tool. - > - > :::image type="content" source="media/github-copilot-app-modernization-overview/copilot-agent-tools.png" alt-text="The GitHub Copilot chat window. The Agent Mode dropdown and Tool selection dropdown are both highlighted."::: +- Open the **GitHub Copilot Chat** window and ask the `@Modernize` agent to upgrade. ## Generate a plan @@ -86,13 +95,13 @@ You can adjust the plan by editing the Markdown file to change the upgrade steps The following snippet demonstrates the structure of a plan: ```md -# .NET 9.0 Upgrade Plan +# .NET 10.0 Upgrade Plan ## Execution Steps -1. Validate that an .NET 9.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed. -2. Ensure that the SDK version specified in global.json files is compatible with the .NET 9.0 upgrade. -3. Upgrade projects to .NET 9.0. +1. Validate that an .NET 10.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed. +2. Ensure that the SDK version specified in global.json files is compatible with the .NET 10.0 upgrade. +3. Upgrade projects to .NET 10.0. - 3.1. Upgrade RazorMovie.csproj - 3.2. Upgrade RazorMovie.Tests.csproj 4. Run unit tests to validate upgrade in the projects listed below: @@ -110,10 +119,10 @@ NuGet packages used across all selected projects or their dependencies that need |:-------------------------------------------------|:-------------------:|:-----------:|:-------------------------| | HtmlSanitizer | 7.1.542 | 9.0.884 | Security vulnerability | | Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | Deprecated | -| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | Recommended for .NET 9.0 | -| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 9.0 | -| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 9.0 | -| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | Recommended for .NET 9.0 | +| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | Recommended for .NET 10.0 | +| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 10.0 | +| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 10.0 | +| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | Recommended for .NET 10.0 | ... ``` @@ -141,7 +150,7 @@ When the upgrade completes, a report is generated that describes every step of t The report also provides a _Next steps_ section that describes the steps you should take after the upgrade finishes. The following example shows the report of a completed upgrade that contained a test failure: ```md -# .NET 9 Upgrade Report +# .NET 10 Upgrade Report ## Project modifications @@ -173,7 +182,7 @@ The report also provides a _Next steps_ section that describes the steps you sho | aa61a18d | Upgrade target framework in RazorMovie.csproj | | cc8c9015 | Upgrade to .NET 9 and update dependencies | | bf8deeac | Update package references in MvcMovie.csproj | -| 9c4b13f9 | Update WpfMovie.csproj to target .NET 9.0 | +| 9c4b13f9 | Update WpfMovie.csproj to target .NET 10.0 | | b8d85e97 | Update test projects to .NET 9 and enhance dependencies | ## Test Results @@ -188,7 +197,7 @@ The report also provides a _Next steps_ section that describes the steps you sho - Review the test results and address the single failing test in `WpfMovie.Tests`. - Ensure all updated NuGet packages are compatible with your application. -- Leverage new features and improvements in .NET 9.0 for your projects. +- Leverage new features and improvements in .NET 10.0 for your projects. ``` ## Telemetry @@ -197,5 +206,4 @@ The tool only collects data about project types, intent to upgrade, and upgrade ## Related content -- [Install GitHub Copilot app modernization - upgrade for .NET](github-copilot-app-modernization-install.md) - [GitHub Copilot app modernization - upgrade for .NET FAQ](github-copilot-app-modernization-faq.yml) diff --git a/docs/core/porting/index.md b/docs/core/porting/index.md index a47db7fd68ce7..f7f0693d994a6 100644 --- a/docs/core/porting/index.md +++ b/docs/core/porting/index.md @@ -1,223 +1,43 @@ --- -title: Port from .NET Framework to .NET -description: Understand the porting process and discover tools you might find helpful when porting a .NET Framework project to .NET. +title: Upgrade .NET apps overview +description: Understand the aspects of upgrading from .NET Framework to .NET, upgrading to the latest .NET, and modernizing your app to the cloud. author: adegeo -ms.date: 06/03/2025 -ms.custom: devdivchpfy22, updateeachrelease -no-loc: ["package.config", PackageReference] +ms.date: 09/12/2025 +ai-usage: ai-assisted --- -# Overview of porting from .NET Framework to .NET -This article provides an overview of what you should consider when porting your code from .NET Framework to .NET (formerly named .NET Core). Porting to .NET from .NET Framework is relatively straightforward for many projects. The complexity of your projects dictates how much work you'll need to do after the initial migration of the project files. +# Overview of upgrading .NET apps -Projects where the app model is available in .NET, such as libraries, console apps, and desktop apps, usually require little change. Projects that require a new app model, such as moving to [ASP.NET Core from ASP.NET](/aspnet/core/migration/proper-to-2x/), require more work. Many patterns from the old app model have equivalents that can be used during the conversion. +This article explains how to plan and perform upgrades of .NET applications. It helps you assess your current app, choose the right upgrade path, use the available tooling, and validate the upgraded app. Follow the guidance to upgrade from .NET Framework to modern .NET, move to the latest .NET release, or modernize your app for cloud and containers. -## Windows desktop technologies +## When to upgrade -Many applications created for .NET Framework use a desktop technology such as Windows Forms or Windows Presentation Foundation (WPF). Both Windows Forms and WPF are available in .NET, but they remain Windows-only technologies. +Consider upgrading when business or technical signals show clear value: -Consider the following dependencies before you migrate a Windows Forms or WPF application: +- .NET or other dependencies reach end of support. +- New security vulnerabilities are discovered or you must meet new compliance requirements. +- Or you face performance or scalability limits that newer .NET versions address. -- Project files for .NET use a different format than .NET Framework. -- Your project might use an API that isn't available in .NET. -- Third-party controls and libraries might not have been ported to .NET and remain only available to .NET Framework. -- Your project uses a [technology that is no longer available](net-framework-tech-unavailable.md) in .NET. +Upgrading is a good opportunity to modernize your app. For example, you could containerize your app, modernize a component to a cloud-native service, or apply cloud patterns that improve reliability and operability. -.NET uses the open-source versions of Windows Forms and WPF and includes enhancements over .NET Framework. +It also increases developer productivity by enabling newer SDKs, templates, and language features that simplify development and reduce maintenance. Prioritize upgrades by risk and return: run a targeted assessment, pilot the changes on a low-risk project, and use the results to plan broader migrations. -For tutorials on migrating your desktop application to .NET, see one of the following articles: +## Upgrade your environment -- [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/) -- [Migrate .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/) +.NET releases a new major version yearly, alternating STS (standard-term support) and LTS (long-term support) versions. The .NET SDK supports targeting older versions of .NET, which you might need continue to support if you deploy to a cloud service that doesn't yet support the latest .NET runtime. -## Windows-specific APIs +It's important to keep your developer tools up-to-date as each new release addresses security vulnerabilities and provides compatibility with new technologies. -Applications can still P/Invoke native libraries on platforms supported by .NET. This technology isn't limited to Windows. However, if the library you're referencing is Windows-specific, such as a _user32.dll_ or _kernel32.dll_, then the code only works on Windows. For each platform you want your app to run on, you have to either find platform-specific versions, or make your code generic enough to run on all platforms. +## Use GitHub Copilot Modernization agent -When you're porting an application from .NET Framework to .NET, your application probably used a library provided by .NET Framework. Many APIs that were available in .NET Framework weren't ported to .NET because they relied on Windows-specific technology, such as the Windows Registry or the GDI+ drawing model. - -The **Windows Compatibility Pack** provides a large portion of the .NET Framework API surface to .NET and is provided via the [Microsoft.Windows.Compatibility NuGet package](https://www.nuget.org/packages/Microsoft.Windows.Compatibility). - -For more information, see [Use the Windows Compatibility Pack to port code to .NET](windows-compat-pack.md). - -## .NET Framework compatibility mode - -The .NET Framework compatibility mode was introduced in .NET Standard 2.0. The compatibility mode allows .NET Standard and .NET projects to reference .NET Framework libraries as if they were compiled for the project's target framework. However, some .NET implementations might support a larger chunk of .NET Framework than others. For example, .NET Core 3.0 extends the .NET Framework compatibility mode to Windows Forms and WPF. Referencing .NET Framework libraries doesn't work for all projects, such as if the library uses WPF APIs, but it does unblock many porting scenarios. For more information, see the [Analyze your dependencies to port code from .NET Framework to .NET](third-party-deps.md#net-framework-compatibility-mode). - -Referencing .NET Framework libraries doesn't work in all cases, as it depends on which .NET Framework APIs were used and whether or not these APIs are supported by the project's target framework. Also, some of the .NET Framework APIs will only work on Windows. The .NET Framework compatibility mode unblocks many porting scenarios but you should test your projects to ensure that they also work at runtime. For more information, see the [Analyze your dependencies to port code from .NET Framework to](third-party-deps.md#net-framework-compatibility-mode). - -## Target framework changes in SDK-style projects - -As previously mentioned, the project files for .NET use a different format than .NET Framework, known as the SDK-style project format. Even if you're not moving from .NET Framework to .NET, you should still upgrade the project file to the latest format. The way to specify a target framework is different in SDK-style projects. In .NET Framework, the `` property is used with a moniker that specifies the version of .NET Framework. For example, .NET Framework 4.7.2 looks like the following snippet: - -```xml - - v4.7.2 - -``` - -An SDK-style project uses a different property to identify the target framework, the `` property. When targeting .NET Framework, the moniker starts with `net` and ends with the version of .NET Framework without any periods. For example, the moniker to target .NET Framework 4.7.2 is `net472`: - -```xml - - net472 - -``` - -For a list of all target monikers, see [Target frameworks in SDK-style projects](../../standard/frameworks.md#supported-target-frameworks). - -## Unavailable technologies - -There are a few technologies in .NET Framework that don't exist in .NET: - -- [Application domains](net-framework-tech-unavailable.md#application-domains) - - Creating additional application domains isn't supported. For code isolation, use separate processes or containers as an alternative. - -- [Remoting](net-framework-tech-unavailable.md#remoting) - - Remoting is used for communicating across application domains, which are no longer supported. For simple communication across processes, consider inter-process communication (IPC) mechanisms as an alternative to remoting, such as the class or the class. For more complex scenarios, consider frameworks such as [StreamJsonRpc](https://github.com/microsoft/vs-streamjsonrpc) or [ASP.NET Core](/aspnet/core) (either using [gRPC](/aspnet/core/grpc) or [RESTful Web API services](/aspnet/core/web-api)). - - Because remoting isn't supported, calls to `BeginInvoke()` and `EndInvoke()` on delegate objects will throw `PlatformNotSupportedException`. - -- [Code access security (CAS)](net-framework-tech-unavailable.md#code-access-security-cas) - - CAS was a sandboxing technique supported by .NET Framework but deprecated in .NET Framework 4.0. It was replaced by Security Transparency and it isn't supported in .NET. Instead, use security boundaries provided by the operating system, such as virtualization, containers, or user accounts. - -- [Security transparency](net-framework-tech-unavailable.md#security-transparency) - - Similar to CAS, the security transparency sandboxing technique is no longer recommended for .NET Framework applications and it isn't supported in .NET. Instead, use security boundaries provided by the operating system, such as virtualization, containers, or user accounts. - -- - - (COM+) isn't supported in .NET. - -- Windows Workflow Foundation (WF) - - WF isn't supported in .NET. For an alternative, see [CoreWF](https://github.com/UiPath/corewf). - -For more information about these unsupported technologies, see [.NET Framework technologies unavailable on .NET 6+](net-framework-tech-unavailable.md). - -## Cross-platform - -.NET (formerly known as .NET Core) is designed to be cross-platform. If your code doesn't depend on Windows-specific technologies, it can run on other platforms such as macOS, Linux, and Android. Such code includes project types like: - -- Libraries -- Console-based tools -- Automation -- ASP.NET sites - -.NET Framework is a Windows-only component. When your code uses Windows-specific technologies or APIs, such as Windows Forms and WPF, the code can still run on .NET but it doesn't run on other operating systems. - -It's possible that your library or console-based application can be used cross-platform without changing much. When you're porting to .NET, you might want to take this into consideration and test your application on other platforms. - -## The future of .NET Standard - -.NET Standard is a formal specification of .NET APIs that are available on multiple .NET implementations. The motivation behind .NET Standard was to establish greater uniformity in the .NET ecosystem. Starting with .NET 5, a different approach to establishing uniformity has been adopted, and this new approach eliminates the need for .NET Standard in many scenarios. For more information, see [.NET 5+ and .NET Standard](../../standard/net-standard.md#net-5-and-net-standard). - -.NET Standard 2.0 was the last version to support .NET Framework. - -## Tools to assist porting - -Instead of manually porting an application from .NET Framework to .NET, you can use different tools to help automate some aspects of the migration. Porting a complex project is, in itself, a complex process. The tools might help in that journey. - -Even if you use a tool to help port your application, you should review the [Considerations when porting section](#considerations-when-porting) in this article. - -### GitHub Copilot App Modernization – Upgrade for .NET - -[GitHub Copilot App Modernization – Upgrade for .NET](github-copilot-app-modernization-overview.md) is a Visual Studio extension that helps you upgrade projects to newer versions of .NET, update dependencies, and apply code fixes. It leverages GitHub Copilot to provide an interactive upgrade experience. - -This tool supports the following upgrade paths: - -- Upgrade projects from .NET Core to .NET. -- Upgrade projects from older versions of .NET to the latest. -- Modernize your code base. - -**When to use:** - -Use GitHub Copilot App Modernization – Upgrade for .NET for scenarios where you want to upgrade your .NET project code and dependencies to newer versions of .NET using an AI-powered tool. - -### GitHub Copilot app modernization for .NET - -GitHub Copilot app modernization for .NET (Preview) helps you migrate .NET applications to Azure efficiently and confidently. Powered by GitHub Copilot and [Application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md), it guides you through assessment, solution recommendations, code fixes, and validation—all within a single tool. - -With this assistant, you can: +The GitHub Copilot Modernization agent provides an AI-assisted, end-to-end experience to speed porting and modernization work. The agent analyzes your project and writes a plan to complete your desired upgrade. You can adjust and iterate on the plan, then perform the upgrades. With this assistant, you can: +- Upgrade projects to a newer .NET version. - Assess your application's code, configuration, and dependencies. -- Plan and set up the right Azure resources. -- Fix issues and apply best practices for cloud migration. -- Validate that your app builds and tests successfully. - -For more details, see the [GitHub Copilot app modernization for .NET overview](upgrade-assistant-overview.md). - -**When to use:** - -Use the GitHub Copilot app modernization for .NET (Preview) experience for scenarios where you need end to end assessment, planning, and remediation for migrating your .NET apps to Azure. - -### Application and Code Assessment for .NET - -[Azure Migrate application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md) provides code and application analysis, along with recommendations for planning cloud deployments. It helps you confidently run business-critical solutions in the cloud by offering a developer-focused assessment of your source code. The tool also provides recommendations and examples to optimize code and configurations for Azure, following industry best practices. - -This tool is also used by the GitHub Copilot app modernization for .NET experience. - -**When to use:** - -Use the Azure Migrate application and code assessment for .NET toolset for an assessment of and recommendations for migrating an existing code base to Azure. The Azure Migrate application and code assessment is essentially a subset of the GitHub Copilot app modernization for .NET experience. - -### .NET Upgrade Assistant - -The [.NET Upgrade Assistant](upgrade-assistant-overview.md) is a command-line tool that can be run on different kinds of .NET Framework apps. It's designed to assist with upgrading .NET Framework apps to .NET. After running the tool, **in most cases the app will require more effort to complete the migration**. The tool includes the installation of analyzers that can assist with completing the migration. This tool works on the following types of .NET Framework applications: - -- Windows Forms -- WPF -- ASP.NET MVC -- Console -- Class libraries - -This tool uses the other tools listed in this article, such as **try-convert**, and guides the migration process. For more information about the tool, see [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md). - -**When to use:** - -Use .NET Upgrade Assistant to upgrade .NET Framework apps to newer versions of .NET. This tool provides an alternative to the AI powered GitHub Copilot App Modernization – Upgrade for .NET experience. - -### `try-convert` - -The `try-convert` tool is a .NET global tool that can convert a project or entire solution to the .NET SDK, including moving desktop apps to .NET. However, this tool isn't recommended if your project has a complicated build process such as custom tasks, targets, or imports. - -For more information, see the [`try-convert` GitHub repository](https://github.com/dotnet/try-convert). - -### Platform compatibility analyzer - -The [Platform compatibility analyzer](../../standard/analyzers/platform-compat-analyzer.md) analyzes whether or not you're using an API that throws a at run time. Although finding one of these APIs is unlikely if you're moving from .NET Framework 4.7.2 or higher, it's good to check. For more information about APIs that throw exceptions on .NET, see [APIs that always throw exceptions on .NET Core](../compatibility/unsupported-apis.md). - -For more information, see [Platform compatibility analyzer](../../standard/analyzers/platform-compat-analyzer.md). - -## Considerations when porting - -When porting your application to .NET, consider the following suggestions in order: - -✔️ CONSIDER using the [.NET Upgrade Assistant](upgrade-assistant-overview.md) to migrate your projects. Even though this tool is in preview, it automates most of the manual steps detailed in this article and gives you a great starting point for continuing your migration path. - -✔️ CONSIDER examining your dependencies first. Your dependencies must target .NET, .NET Standard, or .NET Core. - -✔️ DO migrate from a NuGet _packages.config_ file to [PackageReference](/nuget/consume-packages/package-references-in-project-files) settings in the project file. Use Visual Studio to [convert the _package.config_ file](/nuget/consume-packages/migrate-packages-config-to-package-reference#migration-steps). - -✔️ CONSIDER upgrading to the latest project file format even if you can't yet port your app. .NET Framework projects use an outdated project format. Even though the latest project format, known as SDK-style projects, was created for .NET Core and beyond, the format also works with .NET Framework. Having your project file in the latest format gives you a good basis for porting your app in the future. - -✔️ DO retarget your .NET Framework project to at least .NET Framework 4.7.2. This ensures the availability of the latest API alternatives for cases where .NET Standard doesn't support existing APIs. - -✔️ CONSIDER targeting .NET 8, which is a long-term support (LTS) release. - -✔️ DO target .NET 6+ for **Windows Forms and WPF** projects. .NET 6 and later versions contain many improvements for Desktop apps. - -✔️ CONSIDER targeting .NET Standard 2.0 if you're migrating a library that might also be used with .NET Framework projects. You can also multitarget your library, targeting both .NET Framework and .NET Standard. - -✔️ DO add reference to the [Microsoft.Windows.Compatibility NuGet package](https://www.nuget.org/packages/Microsoft.Windows.Compatibility) if, after migrating, you get errors of missing APIs. A large portion of the .NET Framework API surface is available to .NET via the NuGet package. - -## See also +- Migrate projects from older .NET versions to the latest release. +- Migrate technologies your app depends on to Azure. +- Plan and provision the right Azure resources. +- Fix issues and apply cloud-migration best practices. +- Validate that your app builds and that tests pass. -- [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md) -- [ASP.NET to ASP.NET Core migration](/aspnet/core/migration/proper-to-2x) -- [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/) -- [Migrate .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/) -- [.NET 5 vs. .NET Framework for server apps](../../standard/choosing-core-framework-server.md) +Use the GitHub Copilot Modernization agent when you want a guided, AI-powered path to assess, remediate, and modernize codebases—particularly for projects that have many dependencies, rely on Windows-specific APIs, or when you plan to containerize or migrate services to the cloud. diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index c301f3c0e07c0..bdcf26302c959 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -6,16 +6,18 @@ items: expanded: true items: - name: Overview + href: ../../core/porting/index.md + displayName: copilot, upgrade + - name: Upgrade with GitHub Copilot href: ../../core/porting/github-copilot-app-modernization-overview.md displayName: copilot, upgrade - name: Upgrade with GitHub Copilot FAQ href: ../../core/porting/github-copilot-app-modernization-faq.yml displayName: copilot, upgrade, faq - name: Planning your .NET Framework upgrade - expanded: true items: - name: Overview - href: ../../core/porting/index.md + href: ../../core/porting/framework-overview.md - name: Upgrade with GitHub Copilot href: ../../core/porting/github-copilot-app-modernization-overview.md displayName: copilot, upgrade, modernization From f42e7f941c472b8a67f6a1a93415342dd89f7e17 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Fri, 12 Sep 2025 14:50:05 -0700 Subject: [PATCH 09/38] moar updates --- ...ithub-copilot-app-modernization-example.md | 151 ++++++++++++++++ .../github-copilot-app-modernization-faq.yml | 20 +-- ...thub-copilot-app-modernization-overview.md | 163 ++---------------- docs/navigate/migration-guide/toc.yml | 24 +-- 4 files changed, 192 insertions(+), 166 deletions(-) create mode 100644 docs/core/porting/github-copilot-app-modernization-example.md diff --git a/docs/core/porting/github-copilot-app-modernization-example.md b/docs/core/porting/github-copilot-app-modernization-example.md new file mode 100644 index 0000000000000..a44fe98ecc069 --- /dev/null +++ b/docs/core/porting/github-copilot-app-modernization-example.md @@ -0,0 +1,151 @@ +--- +title: GitHub Copilot app modernization update example +description: "some desc" +titleSuffix: "" +author: adegeo +ms.author: adegeo +ms.topic: concept-article +ms.date: 09/04/2025 + +#customer intent: As a developer, I want to upgrade my project so that I can take advantage of the latest features. + +--- + +# GitHub Copilot app modernization update example + +BLAH + +## Start the upgrade process + +The first step to upgrading is generating a plan by interacting with GitHub Copilot. There are two ways to get Copilot to use the tool: + +- Right-click on the solution or project and select **Modernize**. + + ..TODO: IMAGE.. + + —or— + +- Open the **GitHub Copilot Chat** window and ask the `@Modernize` agent to upgrade. + +## Generate a plan + +Once the process starts, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade. After you answer these questions, an upgrade plan is written in the form of a Markdown file. If you tell Copilot to proceed with the upgrade, this plan describes the steps of the upgrade process. + +You can adjust the plan by editing the Markdown file to change the upgrade steps or add more context. + +> [!CAUTION] +> The plan is generated based on the inter-dependencies of your projects. The upgrade won't succeed if you modify the plan in such a way that the migration path can't complete. For example, if **Project A** depends on **Project B** and you remove **Project B** from the upgrade plan, upgrading **Project A** might fail. + +The following snippet demonstrates the structure of a plan: + +```md +# .NET 10.0 Upgrade Plan + +## Execution Steps + +1. Validate that an .NET 10.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed. +2. Ensure that the SDK version specified in global.json files is compatible with the .NET 10.0 upgrade. +3. Upgrade projects to .NET 10.0. + - 3.1. Upgrade RazorMovie.csproj + - 3.2. Upgrade RazorMovie.Tests.csproj +4. Run unit tests to validate upgrade in the projects listed below: + - RazorMovie.Tests.csproj + +## Settings + +This section contains settings and data used by execution steps. + +### Aggregate NuGet packages modifications across all projects + +NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them. + +| Package Name | Current Version | New Version | Description | +|:-------------------------------------------------|:-------------------:|:-----------:|:-------------------------| +| HtmlSanitizer | 7.1.542 | 9.0.884 | Security vulnerability | +| Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | Deprecated | +| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | Recommended for .NET 10.0 | +| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 10.0 | +| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 10.0 | +| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | Recommended for .NET 10.0 | + +... +``` + +## Perform the upgrade + +Once an upgrade plan is ready, tell Copilot to start the upgrade. Once the upgrade process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. If it runs into a problem, Copilot pauses and asks for your direction or help in fixing these problems. + +The tool differs in experience based on whether or not Copilot _agent mode_ is enabled. + +- **Copilot agent mode** + + When Copilot agent mode is enabled and used, Copilot tries to identify the cause of a problem and apply a fix. If Copilot can't seem to correct the problem, it asks for your help. When you intervene, Copilot learns from the changes you make and tries to automatically apply them for you, if the problem is encountered again. + +- **Copilot fix mode** + + Copilot fix mode is used if agent mode is disabled or not used. Copilot reports the problems it finds and guides you through the fixes required. It relies on you to perform the actual code changes and then it verifies those fixes. + +Each major step in the upgrade process is committed to the local Git repository. + +## Upgrade results + +When the upgrade completes, a report is generated that describes every step of the upgrade. The tool creates a Git commit for every portion of the upgrade process, so you can easily roll back the changes or get detailed information about what changed. The report contains the Git commit hashes. + +The report also provides a _Next steps_ section that describes the steps you should take after the upgrade finishes. The following example shows the report of a completed upgrade that contained a test failure: + +```md +# .NET 10 Upgrade Report + +## Project modifications + +| Project name | Old Target Framework | New Target Framework | Commits | +|:-----------------------------------------------|:-----------------------:|:----------------------------:|---------------------------| +| RazorMovie | net6.0 | net9.0 | af8cf633, aa61a18d | +| MvcMovie | net6.0 | net9.0 | cc8c9015 | +| WpfMovie | net6.0-windows | net9.0-windows | 9c4b13f9 | +| RazorMovie.Tests | net6.0 | net9.0 | b8d85e97 | +| MvcMovie.Tests | net6.0 | net9.0 | b8d85e97 | +| WpfMovie.Tests | net6.0-windows | net9.0-windows7.0 | b8d85e97 | + +## NuGet Packages + +| Package Name | Old Version | New Version | Commit Id | +|:-------------------------------------------------|:-------------------:|:-----------:|-----------| +| HtmlSanitizer | 7.1.542 | 9.0.884 | af8cf633 | +| Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | bf8deeac | +| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | bf8deeac | +| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | bf8deeac | +| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | bf8deeac | +| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | bf8deeac | + +## All commits + +| Commit ID | Description | +|:----------|:--------------------------------------------------------| +| af8cf633 | Update HtmlSanitizer package in RazorMovie.csproj | +| aa61a18d | Upgrade target framework in RazorMovie.csproj | +| cc8c9015 | Upgrade to .NET 9 and update dependencies | +| bf8deeac | Update package references in MvcMovie.csproj | +| 9c4b13f9 | Update WpfMovie.csproj to target .NET 10.0 | +| b8d85e97 | Update test projects to .NET 9 and enhance dependencies | + +## Test Results + +| Project Name | Passed | Failed | Skipped | +|:-----------------------|:------:|:------:|:-------:| +| RazorMovie.Tests | 0 | 0 | 0 | +| MvcMovie.Tests | 2 | 0 | 0 | +| WpfMovie.Tests | 6 | 1 | 0 | + +## Next steps + +- Review the test results and address the single failing test in `WpfMovie.Tests`. +- Ensure all updated NuGet packages are compatible with your application. +- Leverage new features and improvements in .NET 10.0 for your projects. +``` + +## Related content + +- [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) +- [GitHub Copilot app modernization FAQ](github-copilot-app-modernization-faq.yml) +- [Migrate to Azure with GitHub Copilot app modernization](/dotnet/azure/migration/appmod/overview) diff --git a/docs/core/porting/github-copilot-app-modernization-faq.yml b/docs/core/porting/github-copilot-app-modernization-faq.yml index 501980180fde6..58912c3251aec 100644 --- a/docs/core/porting/github-copilot-app-modernization-faq.yml +++ b/docs/core/porting/github-copilot-app-modernization-faq.yml @@ -8,9 +8,9 @@ metadata: ms.topic: faq ms.date: 09/04/2025 -title: GitHub Copilot app modernization - upgrade for .NET FAQ +title: GitHub Copilot app modernization FAQ summary: | - GitHub Copilot app modernization - upgrade for .NET is an interactive GitHub Copilot extension that adds powerful upgrade capabilities to Visual Studio. This article answers frequently asked questions. For more information about the tool, see [What is GitHub Copilot app modernization - upgrade for .NET?](github-copilot-app-modernization-overview.md). + GitHub Copilot app modernization is an interactive GitHub Copilot agent that adds powerful upgrade capabilities to Visual Studio. This article answers frequently asked questions. For more information about the tool, see [What is GitHub Copilot app modernization?](github-copilot-app-modernization-overview.md). The tool requires one of the following GitHub Copilot subscriptions: @@ -22,9 +22,9 @@ summary: | sections: - name: Scenarios questions: - - question: What can the tool do? + - question: What can the agent do? answer: | - Currently, GitHub Copilot app modernization - upgrade for .NET helps you upgrade your .NET projects to newer versions of .NET. The tool is an extension for Visual Studio that performs the following steps in a GitHub Copilot chat session: + Currently, GitHub Copilot app modernization helps you upgrade your .NET projects to newer versions of .NET. The agent is an extension for Visual Studio that performs the following steps in a GitHub Copilot chat session: - Analyzes your projects and proposes an upgrade plan. - According to the plan, runs a series of tasks to upgrade your projects. @@ -33,11 +33,11 @@ sections: - Reports progress and allow access to code changes & logs. - Learns from the interactive experience with you (within the context of the session) to improve subsequent transformations. - - question: What can the tool upgrade? + - question: What can the agent upgrade? answer: | - GitHub Copilot app modernization - upgrade for .NET currently focuses on migrating your projects from one version of .NET to another. For example, upgrading from .NET Core 3.1 or .NET 6, to .NET 9. It also upgrades dependencies and fixes errors in the code post-migration. + GitHub Copilot app modernization currently focuses on migrating your projects from one version of .NET to another. For example, upgrading from .NET Core 3.1 or .NET 6, to .NET 9. It also upgrades dependencies and fixes errors in the code post-migration. - Besides upgrading the target framework, the tool can work with the following types of projects: + Besides upgrading the target framework, the agent can work with the following types of projects: - Azure Functions. - Console apps and class libraries. @@ -59,7 +59,7 @@ sections: - question: What data is collected? answer: | - The tool only collects telemetry information about project types, intent to upgrade, and upgrade duration. The data is aggregated through Visual Studio itself and doesn't contain any user-identifiable information. For more information about Microsoft's privacy policy, see [Visual Studio Customer Experience Improvement Program](/visualstudio/ide/visual-studio-experience-improvement-program?view=vs-2022). + The agent only collects telemetry information about project types, intent to upgrade, and upgrade duration. The data is aggregated through Visual Studio itself and doesn't contain any user-identifiable information. For more information about Microsoft's privacy policy, see [Visual Studio Customer Experience Improvement Program](/visualstudio/ide/visual-studio-experience-improvement-program?view=vs-2022). - question: Can I disable telemetry? answer: | @@ -67,9 +67,9 @@ sections: - question: Can I train the model based on my code base? answer: | - No. Unlike traditional AI tools where you might enter freeform prompts, the tool operates in a more structured way. The AI is embedded within the build-and-fix process, meaning the prompts it uses are predefined and tied to the upgrade plan. So it's not something you can train on your codebase, and it's not something you can manually steer with custom instructions, beyond the changes you can make to the plan Markdown file. + No. Unlike traditional AI tools where you might enter freeform prompts, the agent operates in a more structured way. The AI is embedded within the build-and-fix process, meaning the prompts it uses are predefined and tied to the upgrade plan. So it's not something you can train on your codebase, and it's not something you can manually steer with custom instructions, beyond the changes you can make to the plan Markdown file. - However, the tool does have some adaptability within a session. If you manually adjust a fix, it learns from that interaction in the short term and applies similar corrections if it encounters the same issue again. Think of it as refining its approach within the scope of that upgrade. We never store a user's codebase and never use your code for training the model. Once an upgrade is complete, session data is deleted and not stored. + However, the agent does have some adaptability within a session. If you manually adjust a fix, it learns from that interaction in the short term and applies similar corrections if it encounters the same issue again. Think of it as refining its approach within the scope of that upgrade. We never store a user's codebase and never use your code for training the model. Once an upgrade is complete, session data is deleted and not stored. additionalContent: | ## Related content diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 6ba2aa6904fcc..8f8723738bac0 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -13,32 +13,32 @@ ms.date: 09/04/2025 # What is GitHub Copilot app modernization -GitHub Copilot app modernization helps you upgrade projects to newer versions of .NET and migrate .NET applications to Azure quickly and confidently by guiding you through assessment, solution recommendations, code fixes, and validation - all within Visual Studio. +GitHub Copilot app modernization is a GitHub Copilot agent that helps upgrade projects to newer versions of .NET and migrate .NET applications to Azure quickly and confidently by guiding you through assessment, solution recommendations, code fixes, and validation - all within Visual Studio. -This process streamlines modernization and boosts developer productivity and confidence. GitHub Copilot app modernization for .NET is an all-in-one upgrade and migration assistant that uses AI to improve developer velocity, quality, and results. +This process streamlines modernization and boosts developer productivity and confidence. GitHub Copilot app modernization is an all-in-one upgrade and migration assistant that uses AI to improve developer velocity, quality, and results. With this assistant, you can: -- Upgrade to a newer version of .NET +- Upgrade to a newer version of .NET. +- Migrate technolgies to Azure. +- Modernize your .NET app, especially when upgrading from .NET Framework. - Assess your application's code, configuration, and dependencies. -- Upgrade projects from older versions of .NET to the latest. -- Migrate technolgies your app depends on to Azure -- Plan and set up the right Azure resource -- Fix issues and apply best practices for cloud migration -- Validate that your app builds and tests successfully +- Plan and set up the right Azure resource. +- Fix issues and apply best practices for cloud migration. +- Validate that your app builds and tests successfully. ## Prerequisites - Windows Operating System - [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/)—or—[Visual Studio 2026 Insiders Preview 2 or newer](https://visualstudio.microsoft.com/insiders) -- [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components). - - Enable the following optional components: +- [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components) with the following optional components enabled: - GitHub Copilot - GitHub Copilot app modernization for .NET -- [Sign in to Visual Studio using a GitHub account](/visualstudio/ide/work-with-github-accounts) with [Copilot access](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot). +- Copilot license and supported subscription plan: + + [Sign in to Visual Studio using a GitHub account](/visualstudio/ide/work-with-github-accounts) with [Copilot access](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot). Supported subscription plans: @@ -67,138 +67,10 @@ GitHub Copilot app modernization supports upgrading projects coded in C#. The fo The following upgrade paths are supported: -- Upgrade projects from .NET Core to .NET. -- Upgrade projects from older versions of .NET to the latest. -- Modernize your code base. - -## Start the upgrade process - -The first step to upgrading is generating a plan by interacting with GitHub Copilot. There are two ways to get Copilot to use the tool: - -- Right-click on the solution or project and select **Modernize**. - - ..TODO: IMAGE.. - - —or— - -- Open the **GitHub Copilot Chat** window and ask the `@Modernize` agent to upgrade. - -## Generate a plan - -Once the process starts, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade. After you answer these questions, an upgrade plan is written in the form of a Markdown file. If you tell Copilot to proceed with the upgrade, this plan describes the steps of the upgrade process. - -You can adjust the plan by editing the Markdown file to change the upgrade steps or add more context. - -> [!CAUTION] -> The plan is generated based on the inter-dependencies of your projects. The upgrade won't succeed if you modify the plan in such a way that the migration path can't complete. For example, if **Project A** depends on **Project B** and you remove **Project B** from the upgrade plan, upgrading **Project A** might fail. - -The following snippet demonstrates the structure of a plan: - -```md -# .NET 10.0 Upgrade Plan - -## Execution Steps - -1. Validate that an .NET 10.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed. -2. Ensure that the SDK version specified in global.json files is compatible with the .NET 10.0 upgrade. -3. Upgrade projects to .NET 10.0. - - 3.1. Upgrade RazorMovie.csproj - - 3.2. Upgrade RazorMovie.Tests.csproj -4. Run unit tests to validate upgrade in the projects listed below: - - RazorMovie.Tests.csproj - -## Settings - -This section contains settings and data used by execution steps. - -### Aggregate NuGet packages modifications across all projects - -NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them. - -| Package Name | Current Version | New Version | Description | -|:-------------------------------------------------|:-------------------:|:-----------:|:-------------------------| -| HtmlSanitizer | 7.1.542 | 9.0.884 | Security vulnerability | -| Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | Deprecated | -| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | Recommended for .NET 10.0 | -| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 10.0 | -| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 10.0 | -| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | Recommended for .NET 10.0 | - -... -``` - -## Perform the upgrade - -Once an upgrade plan is ready, tell Copilot to start the upgrade. Once the upgrade process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. If it runs into a problem, Copilot pauses and asks for your direction or help in fixing these problems. - -The tool differs in experience based on whether or not Copilot _agent mode_ is enabled. - -- **Copilot agent mode** - - When Copilot agent mode is enabled and used, Copilot tries to identify the cause of a problem and apply a fix. If Copilot can't seem to correct the problem, it asks for your help. When you intervene, Copilot learns from the changes you make and tries to automatically apply them for you, if the problem is encountered again. - -- **Copilot fix mode** - - Copilot fix mode is used if agent mode is disabled or not used. Copilot reports the problems it finds and guides you through the fixes required. It relies on you to perform the actual code changes and then it verifies those fixes. - -Each major step in the upgrade process is committed to the local Git repository. - -## Upgrade results - -When the upgrade completes, a report is generated that describes every step of the upgrade. The tool creates a Git commit for every portion of the upgrade process, so you can easily roll back the changes or get detailed information about what changed. The report contains the Git commit hashes. - -The report also provides a _Next steps_ section that describes the steps you should take after the upgrade finishes. The following example shows the report of a completed upgrade that contained a test failure: - -```md -# .NET 10 Upgrade Report - -## Project modifications - -| Project name | Old Target Framework | New Target Framework | Commits | -|:-----------------------------------------------|:-----------------------:|:----------------------------:|---------------------------| -| RazorMovie | net6.0 | net9.0 | af8cf633, aa61a18d | -| MvcMovie | net6.0 | net9.0 | cc8c9015 | -| WpfMovie | net6.0-windows | net9.0-windows | 9c4b13f9 | -| RazorMovie.Tests | net6.0 | net9.0 | b8d85e97 | -| MvcMovie.Tests | net6.0 | net9.0 | b8d85e97 | -| WpfMovie.Tests | net6.0-windows | net9.0-windows7.0 | b8d85e97 | - -## NuGet Packages - -| Package Name | Old Version | New Version | Commit Id | -|:-------------------------------------------------|:-------------------:|:-----------:|-----------| -| HtmlSanitizer | 7.1.542 | 9.0.884 | af8cf633 | -| Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | bf8deeac | -| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | bf8deeac | -| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | bf8deeac | -| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | bf8deeac | -| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | bf8deeac | - -## All commits - -| Commit ID | Description | -|:----------|:--------------------------------------------------------| -| af8cf633 | Update HtmlSanitizer package in RazorMovie.csproj | -| aa61a18d | Upgrade target framework in RazorMovie.csproj | -| cc8c9015 | Upgrade to .NET 9 and update dependencies | -| bf8deeac | Update package references in MvcMovie.csproj | -| 9c4b13f9 | Update WpfMovie.csproj to target .NET 10.0 | -| b8d85e97 | Update test projects to .NET 9 and enhance dependencies | - -## Test Results - -| Project Name | Passed | Failed | Skipped | -|:-----------------------|:------:|:------:|:-------:| -| RazorMovie.Tests | 0 | 0 | 0 | -| MvcMovie.Tests | 2 | 0 | 0 | -| WpfMovie.Tests | 6 | 1 | 0 | - -## Next steps - -- Review the test results and address the single failing test in `WpfMovie.Tests`. -- Ensure all updated NuGet packages are compatible with your application. -- Leverage new features and improvements in .NET 10.0 for your projects. -``` +- Upgrade projects from older .NET versions to the latest. +- Upgrade projects from .NET Framework to the latest version of .NET. +- Modernize your code base with new features. +- Migrate components and services to Azure. ## Telemetry @@ -206,4 +78,5 @@ The tool only collects data about project types, intent to upgrade, and upgrade ## Related content -- [GitHub Copilot app modernization - upgrade for .NET FAQ](github-copilot-app-modernization-faq.yml) +- [GitHub Copilot app modernization update example](github-copilot-app-modernization-example.md) +- [GitHub Copilot app modernization FAQ](github-copilot-app-modernization-faq.yml) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index bdcf26302c959..3a69c870435a8 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -8,12 +8,19 @@ items: - name: Overview href: ../../core/porting/index.md displayName: copilot, upgrade - - name: Upgrade with GitHub Copilot - href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade - - name: Upgrade with GitHub Copilot FAQ + - name: GitHub Copilot app modernization + expanded: true + items: + - name: Overview + href: ../../core/porting/github-copilot-app-modernization-overview.md + displayName: copilot, upgrade, faq + - name: Example + href: ../../core/porting/github-copilot-app-modernization-example.md + - name: FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml + displayName: copilot, upgrade, faq + - name: Update .NET SDK and Runtime href: ../../core/porting/github-copilot-app-modernization-faq.yml - displayName: copilot, upgrade, faq - name: Planning your .NET Framework upgrade items: - name: Overview @@ -78,7 +85,6 @@ items: - name: Modernize href: ../../core/porting/modernize.md - name: Other tools - expanded: false items: - name: .NET Upgrade Assistant tool items: @@ -92,7 +98,6 @@ items: href: ../../core/porting/upgrade-assistant-how-to-upgrade.md displayName: upgrade assistant - name: Analyze - expanded: false items: - name: Overview href: ../../core/porting/upgrade-assistant-analyze-overview.md @@ -101,7 +106,6 @@ items: href: ../../core/porting/upgrade-assistant-how-to-analyze.md displayName: upgrade assistant - name: Project upgrade guide - expanded: false items: - name: ASP.NET href: /aspnet/core/migration/fx-to-core/tooling @@ -123,9 +127,7 @@ items: href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: FAQ href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: Predefined tasks - href: /dotnet/azure/migration/appmod/predefined-tasks?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: "Quickstart: Assess and migrate a .NET project" + - name: Migrate a .NET project href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json From 9e7c9b3732878ec5cc3a398a71f3368fe9bb0793 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Fri, 12 Sep 2025 15:25:26 -0700 Subject: [PATCH 10/38] Moar changes yet againz! --- ...ithub-copilot-app-modernization-example.md | 151 ------------------ ...thub-copilot-app-modernization-overview.md | 20 +++ docs/navigate/migration-guide/toc.yml | 17 +- 3 files changed, 26 insertions(+), 162 deletions(-) delete mode 100644 docs/core/porting/github-copilot-app-modernization-example.md diff --git a/docs/core/porting/github-copilot-app-modernization-example.md b/docs/core/porting/github-copilot-app-modernization-example.md deleted file mode 100644 index a44fe98ecc069..0000000000000 --- a/docs/core/porting/github-copilot-app-modernization-example.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: GitHub Copilot app modernization update example -description: "some desc" -titleSuffix: "" -author: adegeo -ms.author: adegeo -ms.topic: concept-article -ms.date: 09/04/2025 - -#customer intent: As a developer, I want to upgrade my project so that I can take advantage of the latest features. - ---- - -# GitHub Copilot app modernization update example - -BLAH - -## Start the upgrade process - -The first step to upgrading is generating a plan by interacting with GitHub Copilot. There are two ways to get Copilot to use the tool: - -- Right-click on the solution or project and select **Modernize**. - - ..TODO: IMAGE.. - - —or— - -- Open the **GitHub Copilot Chat** window and ask the `@Modernize` agent to upgrade. - -## Generate a plan - -Once the process starts, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade. After you answer these questions, an upgrade plan is written in the form of a Markdown file. If you tell Copilot to proceed with the upgrade, this plan describes the steps of the upgrade process. - -You can adjust the plan by editing the Markdown file to change the upgrade steps or add more context. - -> [!CAUTION] -> The plan is generated based on the inter-dependencies of your projects. The upgrade won't succeed if you modify the plan in such a way that the migration path can't complete. For example, if **Project A** depends on **Project B** and you remove **Project B** from the upgrade plan, upgrading **Project A** might fail. - -The following snippet demonstrates the structure of a plan: - -```md -# .NET 10.0 Upgrade Plan - -## Execution Steps - -1. Validate that an .NET 10.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed. -2. Ensure that the SDK version specified in global.json files is compatible with the .NET 10.0 upgrade. -3. Upgrade projects to .NET 10.0. - - 3.1. Upgrade RazorMovie.csproj - - 3.2. Upgrade RazorMovie.Tests.csproj -4. Run unit tests to validate upgrade in the projects listed below: - - RazorMovie.Tests.csproj - -## Settings - -This section contains settings and data used by execution steps. - -### Aggregate NuGet packages modifications across all projects - -NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them. - -| Package Name | Current Version | New Version | Description | -|:-------------------------------------------------|:-------------------:|:-----------:|:-------------------------| -| HtmlSanitizer | 7.1.542 | 9.0.884 | Security vulnerability | -| Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | Deprecated | -| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | Recommended for .NET 10.0 | -| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 10.0 | -| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 10.0 | -| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | Recommended for .NET 10.0 | - -... -``` - -## Perform the upgrade - -Once an upgrade plan is ready, tell Copilot to start the upgrade. Once the upgrade process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. If it runs into a problem, Copilot pauses and asks for your direction or help in fixing these problems. - -The tool differs in experience based on whether or not Copilot _agent mode_ is enabled. - -- **Copilot agent mode** - - When Copilot agent mode is enabled and used, Copilot tries to identify the cause of a problem and apply a fix. If Copilot can't seem to correct the problem, it asks for your help. When you intervene, Copilot learns from the changes you make and tries to automatically apply them for you, if the problem is encountered again. - -- **Copilot fix mode** - - Copilot fix mode is used if agent mode is disabled or not used. Copilot reports the problems it finds and guides you through the fixes required. It relies on you to perform the actual code changes and then it verifies those fixes. - -Each major step in the upgrade process is committed to the local Git repository. - -## Upgrade results - -When the upgrade completes, a report is generated that describes every step of the upgrade. The tool creates a Git commit for every portion of the upgrade process, so you can easily roll back the changes or get detailed information about what changed. The report contains the Git commit hashes. - -The report also provides a _Next steps_ section that describes the steps you should take after the upgrade finishes. The following example shows the report of a completed upgrade that contained a test failure: - -```md -# .NET 10 Upgrade Report - -## Project modifications - -| Project name | Old Target Framework | New Target Framework | Commits | -|:-----------------------------------------------|:-----------------------:|:----------------------------:|---------------------------| -| RazorMovie | net6.0 | net9.0 | af8cf633, aa61a18d | -| MvcMovie | net6.0 | net9.0 | cc8c9015 | -| WpfMovie | net6.0-windows | net9.0-windows | 9c4b13f9 | -| RazorMovie.Tests | net6.0 | net9.0 | b8d85e97 | -| MvcMovie.Tests | net6.0 | net9.0 | b8d85e97 | -| WpfMovie.Tests | net6.0-windows | net9.0-windows7.0 | b8d85e97 | - -## NuGet Packages - -| Package Name | Old Version | New Version | Commit Id | -|:-------------------------------------------------|:-------------------:|:-----------:|-----------| -| HtmlSanitizer | 7.1.542 | 9.0.884 | af8cf633 | -| Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | bf8deeac | -| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | bf8deeac | -| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | bf8deeac | -| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | bf8deeac | -| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | bf8deeac | - -## All commits - -| Commit ID | Description | -|:----------|:--------------------------------------------------------| -| af8cf633 | Update HtmlSanitizer package in RazorMovie.csproj | -| aa61a18d | Upgrade target framework in RazorMovie.csproj | -| cc8c9015 | Upgrade to .NET 9 and update dependencies | -| bf8deeac | Update package references in MvcMovie.csproj | -| 9c4b13f9 | Update WpfMovie.csproj to target .NET 10.0 | -| b8d85e97 | Update test projects to .NET 9 and enhance dependencies | - -## Test Results - -| Project Name | Passed | Failed | Skipped | -|:-----------------------|:------:|:------:|:-------:| -| RazorMovie.Tests | 0 | 0 | 0 | -| MvcMovie.Tests | 2 | 0 | 0 | -| WpfMovie.Tests | 6 | 1 | 0 | - -## Next steps - -- Review the test results and address the single failing test in `WpfMovie.Tests`. -- Ensure all updated NuGet packages are compatible with your application. -- Leverage new features and improvements in .NET 10.0 for your projects. -``` - -## Related content - -- [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) -- [GitHub Copilot app modernization FAQ](github-copilot-app-modernization-faq.yml) -- [Migrate to Azure with GitHub Copilot app modernization](/dotnet/azure/migration/appmod/overview) diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 8f8723738bac0..2f8ecaf074c89 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -72,6 +72,26 @@ The following upgrade paths are supported: - Modernize your code base with new features. - Migrate components and services to Azure. +## How does it work + +Once you request the Modernization agent to upgrade or migrate your app, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade or migration. After you answer these questions, a plan is written in the form of a Markdown file. If you tell Copilot to proceed with the upgrade or migration, it follows the steps described in the plan. + +You can adjust the plan by editing the Markdown file to change the upgrade steps or add more context. + +### Perform the upgrade or migration + +Once an plan is ready, tell Copilot to start using it. Once the process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. + +If it runs into a problem, Copilot tries to identify the cause of a problem and apply a fix. If Copilot can't seem to correct the problem, it asks for your help. When you intervene, Copilot learns from the changes you make and tries to automatically apply them for you, if the problem is encountered again. + +Each major step in the plan is committed to the local Git repository. + +### Upgrade and migration results + +When the process completes, a report is generated that describes every step taken by Copilot. The tool creates a Git commit for every portion of the process, so you can easily roll back the changes or get detailed information about what changed. The report contains the Git commit hashes. + +The report also provides a _Next steps_ section that describes the steps you should take after the upgrade finishes. + ## Telemetry The tool only collects data about project types, intent to upgrade, and upgrade duration. The data is collected and aggregated through Visual Studio itself and doesn't contain any user-identifiable information. For more information about Microsoft's privacy policy, see [Visual Studio Customer Experience Improvement Program](/visualstudio/ide/visual-studio-experience-improvement-program?view=vs-2022&preserve-view=true). diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 3a69c870435a8..95370c29a814b 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -8,17 +8,12 @@ items: - name: Overview href: ../../core/porting/index.md displayName: copilot, upgrade - - name: GitHub Copilot app modernization - expanded: true - items: - - name: Overview - href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade, faq - - name: Example - href: ../../core/porting/github-copilot-app-modernization-example.md - - name: FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml - displayName: copilot, upgrade, faq + - name: GitHub Copilot app modernization Overview + href: ../../core/porting/github-copilot-app-modernization-overview.md + displayName: copilot, upgrade, faq + - name: GitHub Copilot app modernization FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml + displayName: copilot, upgrade, faq - name: Update .NET SDK and Runtime href: ../../core/porting/github-copilot-app-modernization-faq.yml - name: Planning your .NET Framework upgrade From c3306878e12a4ba097edd60fd73d07ea06a18800 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Fri, 12 Sep 2025 15:54:08 -0700 Subject: [PATCH 11/38] mooore --- ...thub-copilot-app-modernization-overview.md | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 2f8ecaf074c89..507bc5b12d3fe 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -51,9 +51,9 @@ With this assistant, you can: - Code must be written in C#. -## Supported project types +## Upgrade .NET projects -GitHub Copilot app modernization supports upgrading projects coded in C#. The following types of projects are supported: +The modernization agent supports upgrading projects coded in C#. The following types of projects are supported: - ASP.NET and related technologies such as MVC, Razor Pages, Web API - Blazor @@ -63,7 +63,7 @@ GitHub Copilot app modernization supports upgrading projects coded in C#. The fo - Class libraries - Console apps -## Upgrade paths +### Upgrade paths The following upgrade paths are supported: @@ -72,6 +72,26 @@ The following upgrade paths are supported: - Modernize your code base with new features. - Migrate components and services to Azure. +## Migrate .NET projects to Azure + +The modernization agent combines automated analysis, AI-driven code remediation, build and vulnerability checks, and deployment automation to simplify migrations to Azure. The following capabilities describe how the agent assesses readiness, applies fixes, and streamlines the migration process: + +- Analysis & Intelligent Recommendations. + + Assess your application's readiness for Azure migration and receive tailored guidance based on its dependencies and identified issues. + +- AI-Powered Code Remediation. + + Apply predefined best-practice code patterns to accelerate modernization with minimal manual effort. + +- Automatic Build and CVE Resolution. + + automatically builds your app and resolves compilation errors and vulnerabilities, streamlining development. + +- Seamless Deployment. + + Deploy to Azure effortlessly, taking your code from development to cloud faster than ever. + ## How does it work Once you request the Modernization agent to upgrade or migrate your app, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade or migration. After you answer these questions, a plan is written in the form of a Markdown file. If you tell Copilot to proceed with the upgrade or migration, it follows the steps described in the plan. From 83b4288d9fbd28c186a8d12746276ca9db7e535d Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 10:05:15 -0700 Subject: [PATCH 12/38] Fix link text in FAQ --- docs/core/porting/github-copilot-app-modernization-faq.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core/porting/github-copilot-app-modernization-faq.yml b/docs/core/porting/github-copilot-app-modernization-faq.yml index 58912c3251aec..82b180581c517 100644 --- a/docs/core/porting/github-copilot-app-modernization-faq.yml +++ b/docs/core/porting/github-copilot-app-modernization-faq.yml @@ -74,4 +74,4 @@ sections: additionalContent: | ## Related content - To learn more, see [What is GitHub Copilot app modernization - upgrade for .NET?](github-copilot-app-modernization-overview.md). + To learn more, see [What is GitHub Copilot app modernization?](github-copilot-app-modernization-overview.md). From c57de95dc40640b569419509abcf8bb85890f695 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 10:09:34 -0700 Subject: [PATCH 13/38] Fix more titles --- .../github-copilot-app-modernization-install.md | 10 +++++----- docs/core/porting/modernize.md | 2 +- docs/navigate/migration-guide/toc.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-install.md b/docs/core/porting/github-copilot-app-modernization-install.md index fd3303b3ed26c..a3cca88c7ed9b 100644 --- a/docs/core/porting/github-copilot-app-modernization-install.md +++ b/docs/core/porting/github-copilot-app-modernization-install.md @@ -1,6 +1,6 @@ --- -title: Install GitHub Copilot app modernization - upgrade for .NET -description: "Learn how to install the GitHub Copilot app modernization - upgrade for .NET Visual Studio extension. App modernization assists you when upgrading projects to the latest dependencies or when upgrading to a new version of .NET" +title: Install GitHub Copilot app modernization +description: "Learn how to install the GitHub Copilot app modernization Visual Studio extension. App modernization assists you when upgrading projects to the latest dependencies or when upgrading to a new version of .NET" titleSuffix: "" author: adegeo ms.author: adegeo @@ -11,9 +11,9 @@ ms.date: 09/04/2025 --- -# Install GitHub Copilot app modernization - upgrade for .NET +# Install GitHub Copilot app modernization -This article guides you through installing GitHub Copilot app modernization - upgrade for .NET extension in Visual Studio. +This article guides you through installing GitHub Copilot app modernization extension in Visual Studio. > [!IMPORTANT] > The GitHib Copilot Modernization agent is included in Visual Studio, starting with versions Visual Studio 2022 17.14.16 and Visual Studio 2026. @@ -68,4 +68,4 @@ There are two ways to determine if GitHub Copilot App Modernization is installed ## Related content -- [What is GitHub Copilot app modernization - upgrade for .NET?](github-copilot-app-modernization-overview.md) +- [What is GitHub Copilot app modernization?](github-copilot-app-modernization-overview.md) diff --git a/docs/core/porting/modernize.md b/docs/core/porting/modernize.md index 7b681e161a2a2..af95ff96494fe 100644 --- a/docs/core/porting/modernize.md +++ b/docs/core/porting/modernize.md @@ -13,7 +13,7 @@ ms.custom: sfi-ropc-nochange In this article, you'll learn about different ways you can modernize your app after it's been upgraded from .NET Framework to .NET. Use the [.NET Upgrade Assistant](upgrade-assistant-overview.md) tool to upgrade your app to .NET. > [!TIP] -> You can use GitHub Copilot to modernize your application after migrating from .NET Framework. For more information, see [What is GitHub Copilot app modernization - upgrade for .NET?](github-copilot-app-modernization-overview.md). +> You can use GitHub Copilot to modernize your application after migrating from .NET Framework. For more information, see [What is GitHub Copilot app modernization?](github-copilot-app-modernization-overview.md). ## Missing APIs diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 95370c29a814b..76f521966668a 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -8,7 +8,7 @@ items: - name: Overview href: ../../core/porting/index.md displayName: copilot, upgrade - - name: GitHub Copilot app modernization Overview + - name: GitHub Copilot app modernization href: ../../core/porting/github-copilot-app-modernization-overview.md displayName: copilot, upgrade, faq - name: GitHub Copilot app modernization FAQ From 2b7b47cd6efdf15dbeae74e5c925319c38b2e59b Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 10:22:18 -0700 Subject: [PATCH 14/38] Remove temp file --- docs/navigate/migration-guide/toc.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 76f521966668a..57acfacdafba1 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -14,8 +14,6 @@ items: - name: GitHub Copilot app modernization FAQ href: ../../core/porting/github-copilot-app-modernization-faq.yml displayName: copilot, upgrade, faq - - name: Update .NET SDK and Runtime - href: ../../core/porting/github-copilot-app-modernization-faq.yml - name: Planning your .NET Framework upgrade items: - name: Overview From 6ba7d9b5cbb1222a20eb7a1fb887d700b9df6fb2 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 12:46:05 -0700 Subject: [PATCH 15/38] Remove refs to upgrade assist; add ghcp app mod --- docs/core/porting/framework-overview.md | 56 +++++++++---------- .../github-copilot-app-modernization-faq.yml | 12 ++-- ...thub-copilot-app-modernization-overview.md | 10 +++- .../includes/github-copilot-suggestion.md | 2 + docs/core/porting/index.md | 6 +- docs/core/porting/modernize.md | 7 +-- docs/core/porting/porting-approaches.md | 12 ++-- .../porting/premigration-needed-changes.md | 2 + docs/core/porting/third-party-deps.md | 2 +- docs/core/porting/unsupported-apis.md | 16 ++---- .../upgrade-assistant-analyze-overview.md | 2 + .../core/porting/upgrade-assistant-install.md | 2 + .../porting/upgrade-assistant-overview.md | 2 + docs/core/whats-new/dotnet-7.md | 4 -- .../analyzers/portability-analyzer.md | 2 +- 15 files changed, 66 insertions(+), 71 deletions(-) create mode 100644 docs/core/porting/includes/github-copilot-suggestion.md diff --git a/docs/core/porting/framework-overview.md b/docs/core/porting/framework-overview.md index a47db7fd68ce7..4ee0244627a15 100644 --- a/docs/core/porting/framework-overview.md +++ b/docs/core/porting/framework-overview.md @@ -2,7 +2,7 @@ title: Port from .NET Framework to .NET description: Understand the porting process and discover tools you might find helpful when porting a .NET Framework project to .NET. author: adegeo -ms.date: 06/03/2025 +ms.date: 09/15/2025 ms.custom: devdivchpfy22, updateeachrelease no-loc: ["package.config", PackageReference] --- @@ -72,13 +72,13 @@ There are a few technologies in .NET Framework that don't exist in .NET: - [Application domains](net-framework-tech-unavailable.md#application-domains) - Creating additional application domains isn't supported. For code isolation, use separate processes or containers as an alternative. + Creating other application domains isn't supported. For code isolation, use separate processes or containers as an alternative. - [Remoting](net-framework-tech-unavailable.md#remoting) Remoting is used for communicating across application domains, which are no longer supported. For simple communication across processes, consider inter-process communication (IPC) mechanisms as an alternative to remoting, such as the class or the class. For more complex scenarios, consider frameworks such as [StreamJsonRpc](https://github.com/microsoft/vs-streamjsonrpc) or [ASP.NET Core](/aspnet/core) (either using [gRPC](/aspnet/core/grpc) or [RESTful Web API services](/aspnet/core/web-api)). - Because remoting isn't supported, calls to `BeginInvoke()` and `EndInvoke()` on delegate objects will throw `PlatformNotSupportedException`. + Because remoting isn't supported, calls to `BeginInvoke()` and `EndInvoke()` on delegate objects throw `PlatformNotSupportedException`. - [Code access security (CAS)](net-framework-tech-unavailable.md#code-access-security-cas) @@ -123,36 +123,30 @@ Instead of manually porting an application from .NET Framework to .NET, you can Even if you use a tool to help port your application, you should review the [Considerations when porting section](#considerations-when-porting) in this article. -### GitHub Copilot App Modernization – Upgrade for .NET +### GitHub Copilot app modernization assistant -[GitHub Copilot App Modernization – Upgrade for .NET](github-copilot-app-modernization-overview.md) is a Visual Studio extension that helps you upgrade projects to newer versions of .NET, update dependencies, and apply code fixes. It leverages GitHub Copilot to provide an interactive upgrade experience. +[GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) is a GitHub Copilot chat assistant helps you plan and upgrade projects to newer versions of .NET, migrate to Azure, update dependencies, and apply code fixes. Azure migration is powered by [Application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md) -This tool supports the following upgrade paths: +This chat assistant supports the following upgrade paths: -- Upgrade projects from .NET Core to .NET. -- Upgrade projects from older versions of .NET to the latest. -- Modernize your code base. +- Upgrade projects from older .NET versions to the latest. +- Upgrade projects from .NET Framework to the latest version of .NET. +- Modernize your code base with new features. +- Migrate components and services to Azure. -**When to use:** - -Use GitHub Copilot App Modernization – Upgrade for .NET for scenarios where you want to upgrade your .NET project code and dependencies to newer versions of .NET using an AI-powered tool. - -### GitHub Copilot app modernization for .NET - -GitHub Copilot app modernization for .NET (Preview) helps you migrate .NET applications to Azure efficiently and confidently. Powered by GitHub Copilot and [Application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md), it guides you through assessment, solution recommendations, code fixes, and validation—all within a single tool. - -With this assistant, you can: +It also works on various project types, such as: -- Assess your application's code, configuration, and dependencies. -- Plan and set up the right Azure resources. -- Fix issues and apply best practices for cloud migration. -- Validate that your app builds and tests successfully. - -For more details, see the [GitHub Copilot app modernization for .NET overview](upgrade-assistant-overview.md). +- ASP.NET and related technologies such as MVC, Razor Pages, Web API +- Blazor +- Azure Functions +- Windows Presentation Foundation +- Windows Forms +- Class libraries +- Console apps **When to use:** -Use the GitHub Copilot app modernization for .NET (Preview) experience for scenarios where you need end to end assessment, planning, and remediation for migrating your .NET apps to Azure. +Use GitHub Copilot app modernization when you want an AI-powered, end-to-end experience to upgrade .NET Framework projects and dependencies to modern .NET—covering assessment, planning, remediation, and guidance for migrating applications to Azure. ### Application and Code Assessment for .NET @@ -196,7 +190,7 @@ For more information, see [Platform compatibility analyzer](../../standard/analy When porting your application to .NET, consider the following suggestions in order: -✔️ CONSIDER using the [.NET Upgrade Assistant](upgrade-assistant-overview.md) to migrate your projects. Even though this tool is in preview, it automates most of the manual steps detailed in this article and gives you a great starting point for continuing your migration path. +✔️ CONSIDER using the [GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) to migrate your projects. GitHub Copilot is powerful at identifying and fixing incompatibilities when porting. It automates most of the manual steps detailed in this article and gives you a great starting point for continuing your migration path. ✔️ CONSIDER examining your dependencies first. Your dependencies must target .NET, .NET Standard, or .NET Core. @@ -208,7 +202,7 @@ When porting your application to .NET, consider the following suggestions in ord ✔️ CONSIDER targeting .NET 8, which is a long-term support (LTS) release. -✔️ DO target .NET 6+ for **Windows Forms and WPF** projects. .NET 6 and later versions contain many improvements for Desktop apps. +✔️ DO target .NET 8+ for **Windows Forms and WPF** projects. .NET 8 and later versions contain many improvements for Desktop apps. ✔️ CONSIDER targeting .NET Standard 2.0 if you're migrating a library that might also be used with .NET Framework projects. You can also multitarget your library, targeting both .NET Framework and .NET Standard. @@ -216,8 +210,8 @@ When porting your application to .NET, consider the following suggestions in ord ## See also -- [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md) +- [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) - [ASP.NET to ASP.NET Core migration](/aspnet/core/migration/proper-to-2x) -- [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/) -- [Migrate .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/) -- [.NET 5 vs. .NET Framework for server apps](../../standard/choosing-core-framework-server.md) +- [Upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/) +- [Upgrade a Windows Forms app to .NET](/dotnet/desktop/winforms/migration/) +- [.NET vs. .NET Framework for server apps](../../standard/choosing-core-framework-server.md) diff --git a/docs/core/porting/github-copilot-app-modernization-faq.yml b/docs/core/porting/github-copilot-app-modernization-faq.yml index 82b180581c517..16d50c75eea50 100644 --- a/docs/core/porting/github-copilot-app-modernization-faq.yml +++ b/docs/core/porting/github-copilot-app-modernization-faq.yml @@ -10,7 +10,7 @@ metadata: title: GitHub Copilot app modernization FAQ summary: | - GitHub Copilot app modernization is an interactive GitHub Copilot agent that adds powerful upgrade capabilities to Visual Studio. This article answers frequently asked questions. For more information about the tool, see [What is GitHub Copilot app modernization?](github-copilot-app-modernization-overview.md). + GitHub Copilot app modernization is an interactive GitHub Copilot agent that adds powerful upgrade capabilities to Visual Studio. This article answers frequently asked questions. For more information about the tool, see [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md). The tool requires one of the following GitHub Copilot subscriptions: @@ -24,7 +24,7 @@ sections: questions: - question: What can the agent do? answer: | - Currently, GitHub Copilot app modernization helps you upgrade your .NET projects to newer versions of .NET. The agent is an extension for Visual Studio that performs the following steps in a GitHub Copilot chat session: + Currently, GitHub Copilot app modernization helps you upgrade your .NET (.NET, .NET Core, and .NET Framework) projects to newer versions of .NET. It also helps migrate services to Azure. It also upgrades dependencies and fixes errors in the code post-migration. The agent performs the following steps in a GitHub Copilot chat session: - Analyzes your projects and proposes an upgrade plan. - According to the plan, runs a series of tasks to upgrade your projects. @@ -35,9 +35,7 @@ sections: - question: What can the agent upgrade? answer: | - GitHub Copilot app modernization currently focuses on migrating your projects from one version of .NET to another. For example, upgrading from .NET Core 3.1 or .NET 6, to .NET 9. It also upgrades dependencies and fixes errors in the code post-migration. - - Besides upgrading the target framework, the agent can work with the following types of projects: + GitHub Copilot app modernization helps you upgrade your .NET projects or migrate them to Azure. Besides upgrading the target framework, the agent can work with the following types of projects: - Azure Functions. - Console apps and class libraries. @@ -71,6 +69,10 @@ sections: However, the agent does have some adaptability within a session. If you manually adjust a fix, it learns from that interaction in the short term and applies similar corrections if it encounters the same issue again. Think of it as refining its approach within the scope of that upgrade. We never store a user's codebase and never use your code for training the model. Once an upgrade is complete, session data is deleted and not stored. + - question: Can I provide feedback? + answer: | + Yes! Use the [Suggest a feature](/visualstudio/ide/suggest-a-feature) and [Report a Problem](/visualstudio/ide/report-a-problem) features of in Visual Studio to provide feedback. + additionalContent: | ## Related content diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 507bc5b12d3fe..533ff2a4ac81d 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -20,17 +20,21 @@ This process streamlines modernization and boosts developer productivity and con With this assistant, you can: - Upgrade to a newer version of .NET. -- Migrate technolgies to Azure. +- Migrate technologies to Azure. - Modernize your .NET app, especially when upgrading from .NET Framework. - Assess your application's code, configuration, and dependencies. - Plan and set up the right Azure resource. - Fix issues and apply best practices for cloud migration. - Validate that your app builds and tests successfully. +## Feedback + +Feedback is important to Microsoft and the efficiency of this agent. Use the [Suggest a feature](/visualstudio/ide/suggest-a-feature) and [Report a Problem](/visualstudio/ide/report-a-problem) features of in Visual Studio to provide feedback. + ## Prerequisites - Windows Operating System -- [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/)—or—[Visual Studio 2026 Insiders Preview 2 or newer](https://visualstudio.microsoft.com/insiders) +- [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/) (To be released). - [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components) with the following optional components enabled: - GitHub Copilot @@ -100,7 +104,7 @@ You can adjust the plan by editing the Markdown file to change the upgrade steps ### Perform the upgrade or migration -Once an plan is ready, tell Copilot to start using it. Once the process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. +Once a plan is ready, tell Copilot to start using it. Once the process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. If it runs into a problem, Copilot tries to identify the cause of a problem and apply a fix. If Copilot can't seem to correct the problem, it asks for your help. When you intervene, Copilot learns from the changes you make and tries to automatically apply them for you, if the problem is encountered again. diff --git a/docs/core/porting/includes/github-copilot-suggestion.md b/docs/core/porting/includes/github-copilot-suggestion.md new file mode 100644 index 0000000000000..0b24b1fa2c5de --- /dev/null +++ b/docs/core/porting/includes/github-copilot-suggestion.md @@ -0,0 +1,2 @@ +> [!IMPORTANT] +> Try the [GitHub Copilot app modernization chat agent](github-copilot-app-modernization-overview.md). This agent analyzes your projects and dependencies, produces a step-by-step migration plan with targeted recommendations and automated code fixes, and commits each change so you can validate or roll back. It automates common porting tasks—updating project files, replacing deprecated APIs, and resolving build issues—so you can modernize faster with less manual effort. For more information, see [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md). diff --git a/docs/core/porting/index.md b/docs/core/porting/index.md index f7f0693d994a6..3fbdb529ddc54 100644 --- a/docs/core/porting/index.md +++ b/docs/core/porting/index.md @@ -28,9 +28,9 @@ It also increases developer productivity by enabling newer SDKs, templates, and It's important to keep your developer tools up-to-date as each new release addresses security vulnerabilities and provides compatibility with new technologies. -## Use GitHub Copilot Modernization agent +## Use GitHub Copilot app modernization agent -The GitHub Copilot Modernization agent provides an AI-assisted, end-to-end experience to speed porting and modernization work. The agent analyzes your project and writes a plan to complete your desired upgrade. You can adjust and iterate on the plan, then perform the upgrades. With this assistant, you can: +The GitHub Copilot app modernization agent provides an AI-assisted, end-to-end experience to speed porting and modernization work. The agent analyzes your project and writes a plan to complete your desired upgrade. You can adjust and iterate on the plan, then perform the upgrades. With this assistant, you can: - Upgrade projects to a newer .NET version. - Assess your application's code, configuration, and dependencies. @@ -40,4 +40,4 @@ The GitHub Copilot Modernization agent provides an AI-assisted, end-to-end exper - Fix issues and apply cloud-migration best practices. - Validate that your app builds and that tests pass. -Use the GitHub Copilot Modernization agent when you want a guided, AI-powered path to assess, remediate, and modernize codebases—particularly for projects that have many dependencies, rely on Windows-specific APIs, or when you plan to containerize or migrate services to the cloud. +Use the GitHub Copilot app modernization agent when you want a guided, AI-powered path to assess, remediate, and modernize codebases—particularly for projects that have many dependencies, rely on Windows-specific APIs, or when you plan to containerize or migrate services to the cloud. diff --git a/docs/core/porting/modernize.md b/docs/core/porting/modernize.md index af95ff96494fe..f40a1cde968cd 100644 --- a/docs/core/porting/modernize.md +++ b/docs/core/porting/modernize.md @@ -10,10 +10,7 @@ ms.custom: sfi-ropc-nochange # Modernize after upgrading to .NET from .NET Framework -In this article, you'll learn about different ways you can modernize your app after it's been upgraded from .NET Framework to .NET. Use the [.NET Upgrade Assistant](upgrade-assistant-overview.md) tool to upgrade your app to .NET. - -> [!TIP] -> You can use GitHub Copilot to modernize your application after migrating from .NET Framework. For more information, see [What is GitHub Copilot app modernization?](github-copilot-app-modernization-overview.md). +In this article, you'll learn about different ways you can modernize your app after it's been upgraded from .NET Framework to .NET. Use the [GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) assistant to upgrade your app to .NET. ## Missing APIs @@ -29,7 +26,7 @@ Projects that target a Windows desktop technology, such as Windows Presentation ## App.config -.NET Framework uses the _App.config_ file to load settings for your app, such as connection strings and log provider configuration. Modern .NET uses the _appsettings.json_ file for app settings. The CLI version of the Upgrade Assistant handles converting _App.config_ files to _appsettings.json_, but the Visual Studio extension doesn't. +.NET Framework uses the _App.config_ file to load settings for your app, such as connection strings and log provider configuration. Modern .NET uses the _appsettings.json_ file for app settings. > [!TIP] > If you don't want to use the _appsettings.json_ file, you can add the `System.Configuration.ConfigurationManager` NuGet package to your app and your code will compile and use the _App.config_ file. diff --git a/docs/core/porting/porting-approaches.md b/docs/core/porting/porting-approaches.md index 7678bf8de25ea..b3d444953161f 100644 --- a/docs/core/porting/porting-approaches.md +++ b/docs/core/porting/porting-approaches.md @@ -3,20 +3,20 @@ title: Porting approaches description: Create a porting plan that best reflects your project and context. author: StephenBonikowsky ms.author: stebon -ms.date: 06/10/2021 +ms.date: 09/15/2025 --- # Create a porting plan -We recommend using the Visual Studio [.NET Upgrade Assistant](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.upgradeassistant) to update .NET Framework code to the latest .NET versions. For more information see the blog [Upgrading your .NET projects with Visual Studio](https://devblogs.microsoft.com/dotnet/upgrade-assistant-now-in-visual-studio/). - -[!INCLUDE[](~/includes/deprecating-api-port.md)] - Before you jump straight into the code, take the time to go through the recommended pre-migration steps. This article gives you insight into the kinds of issues you may come across, and helps you decide on an approach that makes the most sense. +[!INCLUDE[](../../../includes/deprecating-api-port.md)] + ## Port your code Make sure that you follow the [prerequisites to porting code](premigration-needed-changes.md) before you continue any further. Be ready to decide on the best approach for you and begin porting code. +[!INCLUDE [github-copilot-suggestion](includes/github-copilot-suggestion.md)] + ### Deal primarily with the compiler This approach works well for small projects or projects that don't use many .NET Framework APIs. The approach is simple: @@ -98,5 +98,5 @@ If you start with the base of your library and move outward from the base and te ## Next steps -- [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md) +- [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) - [Organize your project to support both .NET Framework and .NET Core](project-structure.md) diff --git a/docs/core/porting/premigration-needed-changes.md b/docs/core/porting/premigration-needed-changes.md index bb86455440a66..46c5ca1ea337a 100644 --- a/docs/core/porting/premigration-needed-changes.md +++ b/docs/core/porting/premigration-needed-changes.md @@ -9,6 +9,8 @@ ms.date: 06/10/2021 Make the needed changes to build and run a .NET application before beginning the work to port your code. These changes can be done while still building and running a .NET Framework application. +[!INCLUDE [github-copilot-suggestion](includes/github-copilot-suggestion.md)] + ## Upgrade to required tooling Upgrade to a version of MSBuild/Visual Studio that supports the version of .NET you will be targeting. See [Versioning relationship between the .NET SDK, MSBuild and VS](versioning-sdk-msbuild-vs.md) for more info. diff --git a/docs/core/porting/third-party-deps.md b/docs/core/porting/third-party-deps.md index d3ed619fa8614..56f04fa14422c 100644 --- a/docs/core/porting/third-party-deps.md +++ b/docs/core/porting/third-party-deps.md @@ -95,7 +95,7 @@ The .NET Team would like to know which libraries are the most important to suppo ## Analyze non-NuGet dependencies -You might have a dependency that isn't a NuGet package, such as a DLL in the file system. You can determine the portability of that dependency with the [.NET Upgrade Assistant](upgrade-assistant-overview.md) tool. +You might have a dependency that isn't a NuGet package, such as a DLL in the file system. You can determine the portability of that dependency with the [GitHub Copilot app modernization agent](github-copilot-app-modernization-overview.md). ## Next steps diff --git a/docs/core/porting/unsupported-apis.md b/docs/core/porting/unsupported-apis.md index 86e55f6704209..68fa8a9387939 100644 --- a/docs/core/porting/unsupported-apis.md +++ b/docs/core/porting/unsupported-apis.md @@ -9,22 +9,14 @@ ms.date: 06/10/2021 APIs in your .NET Framework code may not be supported in .NET for many reasons. These reasons range from the simple to fix, such as a namespace change, to the more challenging to fix, such as an entire technology not being supported. The first step is to determine which of your APIs are no longer supported and then identify the proper fix. +[!INCLUDE [github-copilot-suggestion](includes/github-copilot-suggestion.md)] + ## .NET Portability Analyzer +[!INCLUDE [deprecating-api-port](../../../includes/deprecating-api-port.md)] + The .NET Portability Analyzer is a tool that analyzes assemblies and provides a detailed report on .NET APIs that are missing for the applications or libraries to be portable on your specified targeted .NET platforms. To use the .NET Portability Analyzer in Visual Studio, install the [extension from the marketplace](https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer). For more information, see [The .NET Portability Analyzer](../../standard/analyzers/portability-analyzer.md). - -## Upgrade assistant - -The [.NET Upgrade Assistant](upgrade-assistant-overview.md) is a command-line tool that can be run on different kinds of .NET Framework apps. It's designed to assist with upgrading .NET Framework apps to .NET 5. After running the tool, in most cases, the app will **require more effort to complete the migration**. The tool includes the installation of analyzers that can assist with completing the migration. This tool works on the following types of .NET Framework applications: - -- Windows Forms -- WPF -- ASP.NET MVC -- Console -- Class libraries - -This tool uses the **.NET Portability Analyzer** among other tools, and guides the migration process. For more information about the tool, see [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md). diff --git a/docs/core/porting/upgrade-assistant-analyze-overview.md b/docs/core/porting/upgrade-assistant-analyze-overview.md index 5f2f863489dc2..975c1a0905389 100644 --- a/docs/core/porting/upgrade-assistant-analyze-overview.md +++ b/docs/core/porting/upgrade-assistant-analyze-overview.md @@ -14,6 +14,8 @@ ms.date: 10/08/2024 This article provides an overview of the code analysis function of .NET Upgrade Assistant. Code analysis generates a report based on your project configuration, dependencies, and code. The report contains information about potential issues and problems you might encounter during the upgrade, and what steps you could take to remediate those problems. +[!INCLUDE [github-copilot-suggestion](includes/github-copilot-suggestion.md)] + ## Types of analysis There are two types of analysis you can perform on your code: diff --git a/docs/core/porting/upgrade-assistant-install.md b/docs/core/porting/upgrade-assistant-install.md index 1d1085c5b8e36..08106083a28b1 100644 --- a/docs/core/porting/upgrade-assistant-install.md +++ b/docs/core/porting/upgrade-assistant-install.md @@ -14,6 +14,8 @@ ms.date: 10/08/2024 This article teaches you how to install .NET Upgrade Assistant using either the Visual Studio extension or the command-line interface (CLI) tool. +[!INCLUDE [github-copilot-suggestion](includes/github-copilot-suggestion.md)] + ## Prerequisites - Windows Operating System diff --git a/docs/core/porting/upgrade-assistant-overview.md b/docs/core/porting/upgrade-assistant-overview.md index eb3206ec6fc21..3cba16ac00160 100644 --- a/docs/core/porting/upgrade-assistant-overview.md +++ b/docs/core/porting/upgrade-assistant-overview.md @@ -16,6 +16,8 @@ ms.date: 10/08/2024 .NET Upgrade Assistant is distributed as a Visual Studio extension or a command-line interface (CLI) tool. +[!INCLUDE [github-copilot-suggestion](includes/github-copilot-suggestion.md)] + ## Analyze and upgrade .NET Upgrade Assistant includes an analysis engine that scans your projects and their dependencies. After the scan is complete, a report is generated with detailed information about performing an upgrade. You can use this information to upgrade either the entire project or specific parts of the project. diff --git a/docs/core/whats-new/dotnet-7.md b/docs/core/whats-new/dotnet-7.md index 91bd02b3b38ab..1a4f9d7e9c644 100644 --- a/docs/core/whats-new/dotnet-7.md +++ b/docs/core/whats-new/dotnet-7.md @@ -167,10 +167,6 @@ WPF in .NET 7 includes numerous bug fixes as well as performance and accessibili Orleans is a cross-platform framework for building robust, scalable distributed applications. For information about the latest updates for Orleans, see [Migrate from Orleans 3.x to 7.0](../../orleans/migration-guide.md). -### .NET Upgrade Assistant and CoreWCF - -The .NET Upgrade Assistant now supports upgrading server-side WCF apps to [CoreWCF](https://github.com/CoreWCF/CoreWCF), which is a community-created port of WCF to .NET (Core). For more information, see [Upgrade a WCF server-side project to use CoreWCF](../porting/upgrade-assistant-wcf.md). - ### ML.NET ML.NET now includes a text classification API that makes it easy to train custom text classification models using the latest state-of-the-art deep learning techniques. For more information, see the [What's new with AutoML and tooling](https://devblogs.microsoft.com/dotnet/whats-new-with-mldotnet-automl/) and [Introducing the ML.NET Text Classification API](https://devblogs.microsoft.com/dotnet/introducing-the-ml-dotnet-text-classification-api-preview/) blog posts. diff --git a/docs/standard/analyzers/portability-analyzer.md b/docs/standard/analyzers/portability-analyzer.md index 2897ee2935b2c..d4d50690354c2 100644 --- a/docs/standard/analyzers/portability-analyzer.md +++ b/docs/standard/analyzers/portability-analyzer.md @@ -6,7 +6,7 @@ ms.date: 01/19/2025 # The .NET Portability Analyzer -[!INCLUDE[](~/includes/deprecating-api-port.md)] +[!INCLUDE [deprecating-api-port](../../../includes/deprecating-api-port.md)] Want to make your libraries support multi-platform? Want to see how much work is required to make your .NET Framework application run on .NET Core? The [.NET Portability Analyzer](https://github.com/microsoft/dotnet-apiport) is a tool that analyzes assemblies and provides a detailed report on .NET APIs that are missing for the applications or libraries to be portable on your specified targeted .NET platforms. The Portability Analyzer is a [console app](https://aka.ms/apiportdownload) that analyzes assemblies by specified files or directory. From 74c68710590890ad939fa6afcb490c5cc2d51d07 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 12:53:28 -0700 Subject: [PATCH 16/38] Adjust link title --- docs/azure/migration/appmod/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/azure/migration/appmod/overview.md b/docs/azure/migration/appmod/overview.md index 6fe067e8a25ad..f3fb6f0595c7a 100644 --- a/docs/azure/migration/appmod/overview.md +++ b/docs/azure/migration/appmod/overview.md @@ -47,7 +47,7 @@ For more information, see [Predefined tasks](predefined-tasks.md). ### Upgrading .NET projects -Upgrading .NET apps is a common task that requires substantial time and resources. GitHub Copilot App Modernization - upgrade for .NET provides an AI-based solution designed to assist with updating your .NET apps. For more information, see [GitHub Copilot App Modernization - upgrade for .NET](../../../core/porting/github-copilot-app-modernization-overview.md). +Upgrading .NET apps is a common task that requires substantial time and resources. GitHub Copilot app modernization is an AI-based solution designed to assist with updating your .NET apps. For more information, see [GitHub Copilot app modernization](../../../core/porting/github-copilot-app-modernization-overview.md). ## Common use cases From 2b91df2459bfb97c59334f9ffcbbcc535117a6ab Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 12:56:04 -0700 Subject: [PATCH 17/38] Dates --- docs/core/porting/github-copilot-app-modernization-faq.yml | 2 +- docs/core/porting/github-copilot-app-modernization-install.md | 4 ++-- .../core/porting/github-copilot-app-modernization-overview.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-faq.yml b/docs/core/porting/github-copilot-app-modernization-faq.yml index 16d50c75eea50..3bbbb20c4ee5e 100644 --- a/docs/core/porting/github-copilot-app-modernization-faq.yml +++ b/docs/core/porting/github-copilot-app-modernization-faq.yml @@ -6,7 +6,7 @@ metadata: author: adegeo ms.author: adegeo ms.topic: faq - ms.date: 09/04/2025 + ms.date: 09/15/2025 title: GitHub Copilot app modernization FAQ summary: | diff --git a/docs/core/porting/github-copilot-app-modernization-install.md b/docs/core/porting/github-copilot-app-modernization-install.md index a3cca88c7ed9b..c2ab96c700e32 100644 --- a/docs/core/porting/github-copilot-app-modernization-install.md +++ b/docs/core/porting/github-copilot-app-modernization-install.md @@ -5,7 +5,7 @@ titleSuffix: "" author: adegeo ms.author: adegeo ms.topic: install-set-up-deploy -ms.date: 09/04/2025 +ms.date: 09/15/2025 #customer intent: As a developer, I want to install GitHub Copilot App Modernization so that I can upgrade my projects. @@ -16,7 +16,7 @@ ms.date: 09/04/2025 This article guides you through installing GitHub Copilot app modernization extension in Visual Studio. > [!IMPORTANT] -> The GitHib Copilot Modernization agent is included in Visual Studio, starting with versions Visual Studio 2022 17.14.16 and Visual Studio 2026. +> The GitHub Copilot Modernization agent is included in Visual Studio, starting with versions Visual Studio 2022 17.14.16 and Visual Studio 2026. ## Prerequisites diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 533ff2a4ac81d..6f87ad4f7f695 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -5,7 +5,7 @@ titleSuffix: "" author: adegeo ms.author: adegeo ms.topic: overview -ms.date: 09/04/2025 +ms.date: 09/15/2025 #customer intent: As a developer, I want to upgrade my project so that I can take advantage of the latest features. From da827cf8d623d09b16e4f7baa2072e37af36ef40 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 13:05:15 -0700 Subject: [PATCH 18/38] Rewrite landing --- docs/navigate/migration-guide/index.yml | 82 +++++++++++++++++++++---- 1 file changed, 71 insertions(+), 11 deletions(-) diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index ba42ce5e9cb4f..e9eb9a83667a5 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -1,26 +1,86 @@ ### YamlMime:Landing -title: .NET migration documentation +title: Upgrade .NET apps documentation summary: Learn about migrating apps from .NET Framework to .NET. metadata: - title: .NET migration documentation + title: Upgrade .NET apps documentation description: Learn about migrating apps from .NET Framework to .NET. ms.topic: landing-page - ms.date: 01/17/2023 + ms.date: 09/15/2025 landingContent: - # Card - - title: Migrate from .NET Framework + - title: .NET upgrade guide linkLists: - linkListType: overview links: - - text: Port from .NET Framework to .NET Core + - text: Upgrade apps to the latest version of .NET url: ../../core/porting/index.md - - text: Upgrade Assistant - url: ../../core/porting/upgrade-assistant-overview.md - - linkListType: reference + - text: Use GitHub Copilot to assist in upgrading + url: ../../core/porting/github-copilot-app-modernization-overview.md + - text: Planning your .NET Framework upgrade + url: ../../core/porting/framework-overview.md + - linkListType: concept links: - - text: Versioning info - url: ../../core/porting/versioning-sdk-msbuild-vs.md + - text: Breaking changes and app compatibility + url: ../../core/porting/breaking-changes.md + - text: Unsupported APIs + url: ../../core/compatibility/unsupported-apis.md + + + - title: GitHub Copilot app modernization + linkLists: + - linkListType: overview + links: + - text: GitHub Copilot app modernization overview + url: ../../core/porting/github-copilot-app-modernization-overview.md + - text: GitHub Copilot app modernization FAQ + url: ../../core/porting/github-copilot-app-modernization-faq.yml + - linkListType: how-to-guide + links: + - text: Using Copilot to speed up porting and modernization + url: ../../core/porting/github-copilot-app-modernization-overview.md##how-does-it-work + + - title: Migrate .NET apps to Azure + linkLists: + - linkListType: overview + links: + - text: Migrate .NET apps to Azure (app modernization) + url: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - text: Azure migration quickstart + url: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - linkListType: tutorial + links: + - text: Migration sample + url: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - linkListType: whats-new + links: + - text: Azure migration FAQ + url: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + + - title: Post-upgrade and modernization + linkLists: + - linkListType: concept + links: + - text: Modernize apps after porting + url: ../../core/porting/modernize.md + - text: Performance and reliability guidance + url: ../../core/porting/modernize.md#performance + - linkListType: sample + links: + - text: Modernization samples and patterns + url: ../../core/porting/modernize.md#samples + + - title: Get help and community + linkLists: + - linkListType: overview + links: + - text: .NET on Q&A + url: /answers/products/dotnet + - text: .NET tech community forums + url: https://techcommunity.microsoft.com/t5/net/ct-p/dotnet + - linkListType: learn + links: + - text: Porting documentation index + url: ../../core/porting/index.md \ No newline at end of file From 2a6bcf37767a9cbda40cbaf5b21c6bc6c777ba6c Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 13:07:02 -0700 Subject: [PATCH 19/38] Fix link --- docs/navigate/migration-guide/index.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index e9eb9a83667a5..b8b7836066faf 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -79,7 +79,7 @@ landingContent: - text: .NET on Q&A url: /answers/products/dotnet - text: .NET tech community forums - url: https://techcommunity.microsoft.com/t5/net/ct-p/dotnet + url: https://techcommunity.microsoft.com/category/dotnet - linkListType: learn links: - text: Porting documentation index From 8b3189269b0b829295e41c101c553a3e29aabfa9 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 13:09:22 -0700 Subject: [PATCH 20/38] Fix links --- docs/core/porting/github-copilot-app-modernization-overview.md | 1 - docs/core/porting/includes/github-copilot-suggestion.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 6f87ad4f7f695..1fbfd22e156d0 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -122,5 +122,4 @@ The tool only collects data about project types, intent to upgrade, and upgrade ## Related content -- [GitHub Copilot app modernization update example](github-copilot-app-modernization-example.md) - [GitHub Copilot app modernization FAQ](github-copilot-app-modernization-faq.yml) diff --git a/docs/core/porting/includes/github-copilot-suggestion.md b/docs/core/porting/includes/github-copilot-suggestion.md index 0b24b1fa2c5de..84484c3bbec7c 100644 --- a/docs/core/porting/includes/github-copilot-suggestion.md +++ b/docs/core/porting/includes/github-copilot-suggestion.md @@ -1,2 +1,2 @@ > [!IMPORTANT] -> Try the [GitHub Copilot app modernization chat agent](github-copilot-app-modernization-overview.md). This agent analyzes your projects and dependencies, produces a step-by-step migration plan with targeted recommendations and automated code fixes, and commits each change so you can validate or roll back. It automates common porting tasks—updating project files, replacing deprecated APIs, and resolving build issues—so you can modernize faster with less manual effort. For more information, see [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md). +> Try the [GitHub Copilot app modernization chat agent](../github-copilot-app-modernization-overview.md). This agent analyzes your projects and dependencies, produces a step-by-step migration plan with targeted recommendations and automated code fixes, and commits each change so you can validate or roll back. It automates common porting tasks—updating project files, replacing deprecated APIs, and resolving build issues—so you can modernize faster with less manual effort. For more information, see [What is GitHub Copilot app modernization](../github-copilot-app-modernization-overview.md). From afe67593f4369e3250d2d02cc4951f82e887ea5a Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 13:19:17 -0700 Subject: [PATCH 21/38] build errs --- ...github-copilot-app-modernization-overview.md | 2 +- docs/navigate/migration-guide/index.yml | 17 ++--------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 1fbfd22e156d0..07e3846ed7117 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -27,7 +27,7 @@ With this assistant, you can: - Fix issues and apply best practices for cloud migration. - Validate that your app builds and tests successfully. -## Feedback +## Provide feedback Feedback is important to Microsoft and the efficiency of this agent. Use the [Suggest a feature](/visualstudio/ide/suggest-a-feature) and [Report a Problem](/visualstudio/ide/report-a-problem) features of in Visual Studio to provide feedback. diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index b8b7836066faf..7f88a8aa3eeec 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -40,7 +40,7 @@ landingContent: - linkListType: how-to-guide links: - text: Using Copilot to speed up porting and modernization - url: ../../core/porting/github-copilot-app-modernization-overview.md##how-does-it-work + url: ../../core/porting/github-copilot-app-modernization-overview.md#how-does-it-work - title: Migrate .NET apps to Azure linkLists: @@ -59,19 +59,6 @@ landingContent: - text: Azure migration FAQ url: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - title: Post-upgrade and modernization - linkLists: - - linkListType: concept - links: - - text: Modernize apps after porting - url: ../../core/porting/modernize.md - - text: Performance and reliability guidance - url: ../../core/porting/modernize.md#performance - - linkListType: sample - links: - - text: Modernization samples and patterns - url: ../../core/porting/modernize.md#samples - - title: Get help and community linkLists: - linkListType: overview @@ -83,4 +70,4 @@ landingContent: - linkListType: learn links: - text: Porting documentation index - url: ../../core/porting/index.md \ No newline at end of file + url: ../../core/porting/index.md From a8ed0e1fc203c51d9036fa9866d2110e68e6ccdb Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 13:22:50 -0700 Subject: [PATCH 22/38] Fix landing --- docs/navigate/migration-guide/index.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index 7f88a8aa3eeec..aa19ea8c3834b 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -37,7 +37,7 @@ landingContent: url: ../../core/porting/github-copilot-app-modernization-overview.md - text: GitHub Copilot app modernization FAQ url: ../../core/porting/github-copilot-app-modernization-faq.yml - - linkListType: how-to-guide + - linkListType: concept links: - text: Using Copilot to speed up porting and modernization url: ../../core/porting/github-copilot-app-modernization-overview.md#how-does-it-work @@ -50,11 +50,11 @@ landingContent: url: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - text: Azure migration quickstart url: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - linkListType: tutorial + - linkListType: sample links: - text: Migration sample url: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - linkListType: whats-new + - linkListType: concept links: - text: Azure migration FAQ url: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json @@ -67,7 +67,3 @@ landingContent: url: /answers/products/dotnet - text: .NET tech community forums url: https://techcommunity.microsoft.com/category/dotnet - - linkListType: learn - links: - - text: Porting documentation index - url: ../../core/porting/index.md From 6115fbe89dbd89087b223998ba09109ae4faada5 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 17:33:02 -0700 Subject: [PATCH 23/38] Restructure and add how-to --- ...thub-copilot-app-modernization-overview.md | 5 +- .../how-to-upgrade-with-github-copilot.md | 86 +++++++++++++++++++ docs/navigate/migration-guide/index.yml | 28 +----- docs/navigate/migration-guide/toc.yml | 10 +-- 4 files changed, 98 insertions(+), 31 deletions(-) create mode 100644 docs/core/porting/how-to-upgrade-with-github-copilot.md diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 07e3846ed7117..906012c6fa9de 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -34,7 +34,7 @@ Feedback is important to Microsoft and the efficiency of this agent. Use the [Su ## Prerequisites - Windows Operating System -- [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/) (To be released). +- [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/). (To be released) - [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components) with the following optional components enabled: - GitHub Copilot @@ -67,6 +67,8 @@ The modernization agent supports upgrading projects coded in C#. The following t - Class libraries - Console apps +To learn how to start an upgrade, see [How to upgrade a .NET app with GitHub Copilot app modernization](how-to-upgrade-with-github-copilot.md). + ### Upgrade paths The following upgrade paths are supported: @@ -122,4 +124,5 @@ The tool only collects data about project types, intent to upgrade, and upgrade ## Related content +- [How to upgrade a .NET app with GitHub Copilot app modernization](how-to-upgrade-with-github-copilot.md) - [GitHub Copilot app modernization FAQ](github-copilot-app-modernization-faq.yml) diff --git a/docs/core/porting/how-to-upgrade-with-github-copilot.md b/docs/core/porting/how-to-upgrade-with-github-copilot.md new file mode 100644 index 0000000000000..8f7fb64ef8894 --- /dev/null +++ b/docs/core/porting/how-to-upgrade-with-github-copilot.md @@ -0,0 +1,86 @@ +--- +title: How to upgrade a .NET app with GitHub Copilot app modernization +description: "Learn how to upgrade your .NET applications to newer versions using GitHub Copilot app modernization in Visual Studio. This step-by-step guide covers planning, execution, and validation." +author: adegeo +ms.author: adegeo +ms.topic: how-to +ms.date: 09/15/2025 +ai-usage: ai-generated + +#customer intent: As a developer, I want to upgrade my .NET app using GitHub Copilot app modernization so that I can modernize my codebase efficiently with AI assistance. + +--- + +# How to upgrade a .NET app with GitHub Copilot app modernization + +GitHub Copilot app modernization is an AI-powered agent in Visual Studio that helps you upgrade .NET projects to newer versions and migrate applications to Azure. This article guides you through the process of using this tool to modernize your .NET applications, from initial assessment to final validation. + +The modernization agent analyzes your projects and dependencies, creates an upgrade plan, and assists with code fixes throughout the process. It supports upgrading from older .NET versions to the latest, including migrations from .NET Framework to modern .NET. + +## Prerequisites + +Before you begin, ensure you have the following requirements: + +- Windows Operating System +- [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/) (To be released) +- [.NET desktop development workload](/visualstudio/install/modify-visual-studio?view=vs-2022&preserve-view=true#change-workloads-or-individual-components) with the following optional components enabled: + - GitHub Copilot + - GitHub Copilot app modernization for .NET +- GitHub account with Copilot access and supported subscription plan: + - [Sign in to Visual Studio using a GitHub account](/visualstudio/ide/work-with-github-accounts) with [Copilot access](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot) + - Supported subscription plans: Copilot Pro, Copilot Pro+, Copilot Business, or Copilot Enterprise + - If you change subscriptions, you must restart Visual Studio +- A .NET project written in C# that you want to upgrade + +## Start the upgrade process + +The first step to upgrading is generating a plan by interacting with GitHub Copilot. Follow these steps to initiate the upgrade: + +1. Open your .NET project or solution in Visual Studio. +1. Access the GitHub Copilot app modernization agent using one of these methods: + + Right-click on the solution or project in **Solution Explorer** and select **Modernize**. + + —or— + + Open the **GitHub Copilot Chat** window and type `@modernize` followed by your upgrade request. + +1. Tell the `@modernize` agent what you want to upgrade. + +## Generate an upgrade plan + +Once the process starts, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade. After you answer these questions, an upgrade plan is written in the form of a Markdown file. + +To generate and customize your plan: + +1. Answer Copilot's questions about your upgrade requirements and preferences. +1. Review the generated upgrade plan in the Markdown file. +1. Optionally, edit the Markdown file to change the upgrade steps or add more context. +1. Tell Copilot to proceed with the upgrade when you're satisfied with the plan. + +> [!CAUTION] +> The plan is generated based on the inter-dependencies of your projects. The upgrade won't succeed if you modify the plan in such a way that the migration path can't complete. For example, if **Project A** depends on **Project B** and you remove **Project B** from the upgrade plan, upgrading **Project A** might fail. + +## Perform the upgrade + +Once an upgrade plan is ready, tell Copilot to start the upgrade. Once the upgrade process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. If it runs into a problem, Copilot pauses and asks for your direction or help in fixing these problems. + +Each major step in the upgrade process is committed to the local Git repository. + +## Review upgrade results + +When the upgrade completes, a report is generated that describes every step of the upgrade. The tool creates a Git commit for every portion of the upgrade process, so you can easily roll back the changes or get detailed information about what changed. The report contains the Git commit hashes and provides a _Next steps_ section that describes the steps you should take after the upgrade finishes. + +## Next steps + +After completing the upgrade process: + +- Review the generated upgrade report and any test results. +- Address any failing tests or compilation errors that might remain. +- Ensure all updated NuGet packages are compatible with your application. +- Test your application thoroughly to verify the upgrade was successful. +- Apply new features and improvements available in the upgraded .NET version. + +## Related content + +- [GitHub Copilot app modernization FAQ](github-copilot-app-modernization-faq.yml) diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index aa19ea8c3834b..0a5affea580ab 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -11,36 +11,14 @@ metadata: landingContent: - - title: .NET upgrade guide + - title: Upgrade .NET apps linkLists: - linkListType: overview links: - - text: Upgrade apps to the latest version of .NET - url: ../../core/porting/index.md - - text: Use GitHub Copilot to assist in upgrading + - text: Upgrade .NET apps url: ../../core/porting/github-copilot-app-modernization-overview.md - - text: Planning your .NET Framework upgrade - url: ../../core/porting/framework-overview.md - - linkListType: concept - links: - - text: Breaking changes and app compatibility - url: ../../core/porting/breaking-changes.md - - text: Unsupported APIs - url: ../../core/compatibility/unsupported-apis.md - - - - title: GitHub Copilot app modernization - linkLists: - - linkListType: overview - links: - - text: GitHub Copilot app modernization overview - url: ../../core/porting/github-copilot-app-modernization-overview.md - - text: GitHub Copilot app modernization FAQ + - text: FAQ url: ../../core/porting/github-copilot-app-modernization-faq.yml - - linkListType: concept - links: - - text: Using Copilot to speed up porting and modernization - url: ../../core/porting/github-copilot-app-modernization-overview.md#how-does-it-work - title: Migrate .NET apps to Azure linkLists: diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 57acfacdafba1..21f50c1962348 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -1,19 +1,19 @@ items: - name: .NET upgrade guide href: index.yml - + - name: Overview + href: ../../core/porting/index.md - name: Upgrade .NET apps expanded: true items: - name: Overview - href: ../../core/porting/index.md - displayName: copilot, upgrade - - name: GitHub Copilot app modernization href: ../../core/porting/github-copilot-app-modernization-overview.md displayName: copilot, upgrade, faq - - name: GitHub Copilot app modernization FAQ + - name: FAQ href: ../../core/porting/github-copilot-app-modernization-faq.yml displayName: copilot, upgrade, faq + - name: How to upgrade with GitHub Copilot + href: ../../core/porting/how-to-upgrade-with-github-copilot.md - name: Planning your .NET Framework upgrade items: - name: Overview From f7277ffc74c47505a05c2ada732b1f9df8ff6015 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 17:39:15 -0700 Subject: [PATCH 24/38] Add howto in card --- docs/navigate/migration-guide/index.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index 0a5affea580ab..7b151313b8e00 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -19,6 +19,10 @@ landingContent: url: ../../core/porting/github-copilot-app-modernization-overview.md - text: FAQ url: ../../core/porting/github-copilot-app-modernization-faq.yml + - linkListType: how-to-guide + links: + - text: How to upgrade a .NET app + url: ../../core/porting/how-to-upgrade-with-github-copilot.md - title: Migrate .NET apps to Azure linkLists: From fe51577bc8fc7ad49a4d19c2cc6a5aa2e1196929 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 17:41:54 -0700 Subject: [PATCH 25/38] Add link --- docs/core/porting/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/core/porting/index.md b/docs/core/porting/index.md index 3fbdb529ddc54..fb7e37918b3e8 100644 --- a/docs/core/porting/index.md +++ b/docs/core/porting/index.md @@ -41,3 +41,5 @@ The GitHub Copilot app modernization agent provides an AI-assisted, end-to-end e - Validate that your app builds and that tests pass. Use the GitHub Copilot app modernization agent when you want a guided, AI-powered path to assess, remediate, and modernize codebases—particularly for projects that have many dependencies, rely on Windows-specific APIs, or when you plan to containerize or migrate services to the cloud. + +For more information, see [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md). From 1590957075c539de297857eaeebfebea3af29cc7 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 19:48:53 -0700 Subject: [PATCH 26/38] Add snippets back --- .../how-to-upgrade-with-github-copilot.md | 90 ++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/docs/core/porting/how-to-upgrade-with-github-copilot.md b/docs/core/porting/how-to-upgrade-with-github-copilot.md index 8f7fb64ef8894..bf9d77776124e 100644 --- a/docs/core/porting/how-to-upgrade-with-github-copilot.md +++ b/docs/core/porting/how-to-upgrade-with-github-copilot.md @@ -5,7 +5,7 @@ author: adegeo ms.author: adegeo ms.topic: how-to ms.date: 09/15/2025 -ai-usage: ai-generated +ai-usage: ai-assisted #customer intent: As a developer, I want to upgrade my .NET app using GitHub Copilot app modernization so that I can modernize my codebase efficiently with AI assistance. @@ -61,6 +61,41 @@ To generate and customize your plan: > [!CAUTION] > The plan is generated based on the inter-dependencies of your projects. The upgrade won't succeed if you modify the plan in such a way that the migration path can't complete. For example, if **Project A** depends on **Project B** and you remove **Project B** from the upgrade plan, upgrading **Project A** might fail. +The following snippet demonstrates the structure of a plan: + +```md +# .NET 9.0 Upgrade Plan + +## Execution Steps + +1. Validate that an .NET 9.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed. +2. Ensure that the SDK version specified in global.json files is compatible with the .NET 9.0 upgrade. +3. Upgrade projects to .NET 9.0. + - 3.1. Upgrade RazorMovie.csproj + - 3.2. Upgrade RazorMovie.Tests.csproj +4. Run unit tests to validate upgrade in the projects listed below: + - RazorMovie.Tests.csproj + +## Settings + +This section contains settings and data used by execution steps. + +### Aggregate NuGet packages modifications across all projects + +NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them. + +| Package Name | Current Version | New Version | Description | +|:-------------------------------------------------|:-------------------:|:-----------:|:-------------------------| +| HtmlSanitizer | 7.1.542 | 9.0.884 | Security vulnerability | +| Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | Deprecated | +| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | Recommended for .NET 9.0 | +| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 9.0 | +| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | Recommended for .NET 9.0 | +| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | Recommended for .NET 9.0 | + +... +``` + ## Perform the upgrade Once an upgrade plan is ready, tell Copilot to start the upgrade. Once the upgrade process starts, Copilot lets you know what it's doing in the chat window and it opens the **Upgrade Progress Details** document, which lists the status of every step. If it runs into a problem, Copilot pauses and asks for your direction or help in fixing these problems. @@ -71,6 +106,59 @@ Each major step in the upgrade process is committed to the local Git repository. When the upgrade completes, a report is generated that describes every step of the upgrade. The tool creates a Git commit for every portion of the upgrade process, so you can easily roll back the changes or get detailed information about what changed. The report contains the Git commit hashes and provides a _Next steps_ section that describes the steps you should take after the upgrade finishes. +The following example shows the report of a completed upgrade that contained a test failure: + +```md +# .NET 9 Upgrade Report + +## Project modifications + +| Project name | Old Target Framework | New Target Framework | Commits | +|:-----------------------------------------------|:-----------------------:|:----------------------------:|---------------------------| +| RazorMovie | net6.0 | net9.0 | af8cf633, aa61a18d | +| MvcMovie | net6.0 | net9.0 | cc8c9015 | +| WpfMovie | net6.0-windows | net9.0-windows | 9c4b13f9 | +| RazorMovie.Tests | net6.0 | net9.0 | b8d85e97 | +| MvcMovie.Tests | net6.0 | net9.0 | b8d85e97 | +| WpfMovie.Tests | net6.0-windows | net9.0-windows7.0 | b8d85e97 | + +## NuGet Packages + +| Package Name | Old Version | New Version | Commit Id | +|:-------------------------------------------------|:-------------------:|:-----------:|-----------| +| HtmlSanitizer | 7.1.542 | 9.0.884 | af8cf633 | +| Microsoft.Data.SqlClient | 4.0.5 | 6.0.2 | bf8deeac | +| Microsoft.EntityFrameworkCore.Design | 6.0.0-rtm.21467.1 | 9.0.5 | bf8deeac | +| Microsoft.EntityFrameworkCore.SqlServer | 6.0.0-rc.1.21452.10 | 9.0.5 | bf8deeac | +| Microsoft.EntityFrameworkCore.Tools | 6.0.0-rc.1.21452.10 | 9.0.5 | bf8deeac | +| Microsoft.VisualStudio.Web.CodeGeneration.Design | 6.0.0-rc.1.21464.1 | 9.0.0 | bf8deeac | + +## All commits + +| Commit ID | Description | +|:----------|:--------------------------------------------------------| +| af8cf633 | Update HtmlSanitizer package in RazorMovie.csproj | +| aa61a18d | Upgrade target framework in RazorMovie.csproj | +| cc8c9015 | Upgrade to .NET 9 and update dependencies | +| bf8deeac | Update package references in MvcMovie.csproj | +| 9c4b13f9 | Update WpfMovie.csproj to target .NET 9.0 | +| b8d85e97 | Update test projects to .NET 9 and enhance dependencies | + +## Test Results + +| Project Name | Passed | Failed | Skipped | +|:-----------------------|:------:|:------:|:-------:| +| RazorMovie.Tests | 0 | 0 | 0 | +| MvcMovie.Tests | 2 | 0 | 0 | +| WpfMovie.Tests | 6 | 1 | 0 | + +## Next steps + +- Review the test results and address the single failing test in `WpfMovie.Tests`. +- Ensure all updated NuGet packages are compatible with your application. +- Leverage new features and improvements in .NET 9.0 for your projects. +``` + ## Next steps After completing the upgrade process: From 18b5eaeb45840c5d551d4e5a1c81e2ede17d211a Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 20:28:04 -0700 Subject: [PATCH 27/38] Add more information --- .../github-copilot-app-modernization-faq.yml | 75 ++++++++++++++----- 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-faq.yml b/docs/core/porting/github-copilot-app-modernization-faq.yml index 3bbbb20c4ee5e..9b559d8adf147 100644 --- a/docs/core/porting/github-copilot-app-modernization-faq.yml +++ b/docs/core/porting/github-copilot-app-modernization-faq.yml @@ -10,7 +10,7 @@ metadata: title: GitHub Copilot app modernization FAQ summary: | - GitHub Copilot app modernization is an interactive GitHub Copilot agent that adds powerful upgrade capabilities to Visual Studio. This article answers frequently asked questions. For more information about the tool, see [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md). + GitHub Copilot app modernization is an interactive GitHub Copilot agent that adds powerful upgrade capabilities to Visual Studio. This article answers frequently asked questions. For more information about the modernization agent, see [What is GitHub Copilot app modernization](github-copilot-app-modernization-overview.md). The tool requires one of the following GitHub Copilot subscriptions: @@ -19,8 +19,10 @@ summary: | - Copilot Business - Copilot Enterprise + GitHub Copilot app modernization is included in [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/). + sections: - - name: Scenarios + - name: Modernization Agent questions: - question: What can the agent do? answer: | @@ -33,6 +35,41 @@ sections: - Reports progress and allow access to code changes & logs. - Learns from the interactive experience with you (within the context of the session) to improve subsequent transformations. + - question: What limitations are there? + answer: | + - Only Git repositories are supported. + - There's no guarantee that the upgrade suggestions are considered best practices. + - The LLM doesn't persist learning from the upgrade. Meaning, code fixes and corrections you provide during the upgrade process don't persist and can't be remembered for future upgrades. + - It only runs on Windows. + + - question: Which model should I use? + answer: | + You should use a good coding model, such as Claude Sonnet 4.0 or Claude Sonnet 3.7. + + - question: Can I train the model based on my code base? + answer: | + No. Unlike traditional AI tools where you might enter freeform prompts, the agent operates in a more structured way. The AI is embedded within the build-and-fix process, meaning the prompts it uses are predefined and tied to the upgrade plan. So it's not something you can train on your codebase, and it's not something you can manually steer with custom instructions, beyond the changes you can make to the plan Markdown file. + + However, the agent does have some adaptability within a session. If you manually adjust a fix, it learns from that interaction in the short term and applies similar corrections if it encounters the same issue again. Think of it as refining its approach within the scope of that upgrade. + + - question: Does the agent store my source code? + answer: | + We never store a user's codebase and never use your code for training the model. Once an upgrade is complete, session data is deleted. + + - question: Can I provide feedback? + answer: | + Yes! Use the [Suggest a feature](/visualstudio/ide/suggest-a-feature) and [Report a Problem](/visualstudio/ide/report-a-problem) features of in Visual Studio to provide feedback. + + - question: What data is collected? + answer: | + The agent only collects telemetry information about project types, intent to upgrade, and upgrade duration. The data is aggregated through Visual Studio itself and doesn't contain any user-identifiable information. For more information about Microsoft's privacy policy, see [Visual Studio Customer Experience Improvement Program](/visualstudio/ide/visual-studio-experience-improvement-program?view=vs-2022). + + - question: Can I disable telemetry? + answer: | + Yes, you can disable telemetry. In Visual Studio, select **Help** > **Privacy** > **Privacy Settings** > **"No, I would not like to participate."** + + - name: Upgrade .NET apps + questions: - question: What can the agent upgrade? answer: | GitHub Copilot app modernization helps you upgrade your .NET projects or migrate them to Azure. Besides upgrading the target framework, the agent can work with the following types of projects: @@ -48,30 +85,28 @@ sections: - Test projects such as MSTest and NUnit. - .NET Framework projects. - - question: What limitations are there? - answer: | - - Only Git repositories are supported. - - There's no guarantee that the upgrade suggestions are considered best practices. - - The LLM doesn't persist learning from the upgrade. Meaning, code fixes and corrections you provide during the upgrade process don't persist and can't be remembered for future upgrades. - - It only runs on Windows. - - - question: What data is collected? + - name: Migrate to Azure + questions: + - question: What can the agent migrate? answer: | - The agent only collects telemetry information about project types, intent to upgrade, and upgrade duration. The data is aggregated through Visual Studio itself and doesn't contain any user-identifiable information. For more information about Microsoft's privacy policy, see [Visual Studio Customer Experience Improvement Program](/visualstudio/ide/visual-studio-experience-improvement-program?view=vs-2022). + The agent can assist in migrating your .NET applications to Azure, including: + - Web apps + - API apps + - Azure Functions + - Containerized applications - - question: Can I disable telemetry? + - question: Can I monitor assessment progress? answer: | - Yes, you can disable telemetry. In Visual Studio, select **Help** > **Privacy** > **Privacy Settings** > **"No, I would not like to participate."** + Yes, you can monitor the progress of the assessment through the Visual Studio interface. The agent provides real-time feedback and updates on the status of the migration process. - - question: Can I train the model based on my code base? - answer: | - No. Unlike traditional AI tools where you might enter freeform prompts, the agent operates in a more structured way. The AI is embedded within the build-and-fix process, meaning the prompts it uses are predefined and tied to the upgrade plan. So it's not something you can train on your codebase, and it's not something you can manually steer with custom instructions, beyond the changes you can make to the plan Markdown file. + While the assessment is running, you can monitor its progress by viewing the command-line output: - However, the agent does have some adaptability within a session. If you manually adjust a fix, it learns from that interaction in the short term and applies similar corrections if it encounters the same issue again. Think of it as refining its approach within the scope of that upgrade. We never store a user's codebase and never use your code for training the model. Once an upgrade is complete, session data is deleted and not stored. + 1. In Visual Studio, go to **View** > **Output** to open the Output window. + 2. In the Output window, find the **Show output from:** dropdown. + 3. Select **AppModernizationExtension** from the dropdown list. + 4. The command-line output from the assessment tool appears here, showing real-time progress. - - question: Can I provide feedback? - answer: | - Yes! Use the [Suggest a feature](/visualstudio/ide/suggest-a-feature) and [Report a Problem](/visualstudio/ide/report-a-problem) features of in Visual Studio to provide feedback. + You can also access the **Output** window using the keyboard shortcut Ctrl+Alt+O. additionalContent: | ## Related content From 0b73f746005a5792bd8ba42e700b0504467981bb Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 20:31:10 -0700 Subject: [PATCH 28/38] TOC move FAQ --- docs/navigate/migration-guide/toc.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 21f50c1962348..584f270366054 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -3,15 +3,15 @@ items: href: index.yml - name: Overview href: ../../core/porting/index.md + - name: FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml + displayName: copilot, upgrade, faq - name: Upgrade .NET apps expanded: true items: - name: Overview href: ../../core/porting/github-copilot-app-modernization-overview.md displayName: copilot, upgrade, faq - - name: FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml - displayName: copilot, upgrade, faq - name: How to upgrade with GitHub Copilot href: ../../core/porting/how-to-upgrade-with-github-copilot.md - name: Planning your .NET Framework upgrade @@ -118,9 +118,9 @@ items: items: - name: Overview href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: FAQ - href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migrate a .NET project href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Troubleshooting + href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json From 1ed0b324210693e913e5ebc0301c75f9255286f2 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 20:44:17 -0700 Subject: [PATCH 29/38] Split content into differnet TOCs --- .../github-copilot-modernize/index.yml | 51 +++++ .../navigate/github-copilot-modernize/toc.yml | 26 +++ docs/navigate/migration-guide/index.yml | 30 ++- docs/navigate/migration-guide/toc.yml | 214 +++++++++--------- 4 files changed, 210 insertions(+), 111 deletions(-) create mode 100644 docs/navigate/github-copilot-modernize/index.yml create mode 100644 docs/navigate/github-copilot-modernize/toc.yml diff --git a/docs/navigate/github-copilot-modernize/index.yml b/docs/navigate/github-copilot-modernize/index.yml new file mode 100644 index 0000000000000..241014cf08d71 --- /dev/null +++ b/docs/navigate/github-copilot-modernize/index.yml @@ -0,0 +1,51 @@ +### YamlMime:Landing + +title: Use GitHub Copilot to upgrade .NET apps +summary: Learn about updating and migrating .NET apps with GitHub Copilot. + +metadata: + title: Use GitHub Copilot to upgrade .NET apps + description: Learn about updating apps from .NET Framework to .NET with GitHub Copilot. + ms.topic: landing-page + ms.date: 09/15/2025 + +landingContent: + + - title: Upgrade .NET apps + linkLists: + - linkListType: overview + links: + - text: Upgrade .NET apps + url: ../../core/porting/github-copilot-app-modernization-overview.md + - text: FAQ + url: ../../core/porting/github-copilot-app-modernization-faq.yml + - linkListType: how-to-guide + links: + - text: How to upgrade a .NET app + url: ../../core/porting/how-to-upgrade-with-github-copilot.md + + - title: Migrate .NET apps to Azure + linkLists: + - linkListType: overview + links: + - text: Migrate .NET apps to Azure (app modernization) + url: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - text: Azure migration quickstart + url: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - linkListType: sample + links: + - text: Migration sample + url: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - linkListType: concept + links: + - text: Azure migration FAQ + url: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + + - title: Get help and community + linkLists: + - linkListType: overview + links: + - text: .NET on Q&A + url: /answers/products/dotnet + - text: .NET tech community forums + url: https://techcommunity.microsoft.com/category/dotnet diff --git a/docs/navigate/github-copilot-modernize/toc.yml b/docs/navigate/github-copilot-modernize/toc.yml new file mode 100644 index 0000000000000..b7ef2872e4ed9 --- /dev/null +++ b/docs/navigate/github-copilot-modernize/toc.yml @@ -0,0 +1,26 @@ +items: + - name: GitHub Copilot app modernization for .NET + href: index.yml + - name: FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml + displayName: copilot, upgrade + - name: Upgrade .NET apps + expanded: true + items: + - name: Overview + href: ../../core/porting/github-copilot-app-modernization-overview.md + displayName: copilot, upgrade + - name: How to upgrade with GitHub Copilot + href: ../../core/porting/how-to-upgrade-with-github-copilot.md + + - name: Migrate .NET apps to Azure + expanded: true + items: + - name: Overview + href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Migrate a .NET project + href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Migration sample + href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Troubleshooting + href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index 7b151313b8e00..aa19ea8c3834b 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -11,18 +11,36 @@ metadata: landingContent: - - title: Upgrade .NET apps + - title: .NET upgrade guide linkLists: - linkListType: overview links: - - text: Upgrade .NET apps + - text: Upgrade apps to the latest version of .NET + url: ../../core/porting/index.md + - text: Use GitHub Copilot to assist in upgrading url: ../../core/porting/github-copilot-app-modernization-overview.md - - text: FAQ + - text: Planning your .NET Framework upgrade + url: ../../core/porting/framework-overview.md + - linkListType: concept + links: + - text: Breaking changes and app compatibility + url: ../../core/porting/breaking-changes.md + - text: Unsupported APIs + url: ../../core/compatibility/unsupported-apis.md + + + - title: GitHub Copilot app modernization + linkLists: + - linkListType: overview + links: + - text: GitHub Copilot app modernization overview + url: ../../core/porting/github-copilot-app-modernization-overview.md + - text: GitHub Copilot app modernization FAQ url: ../../core/porting/github-copilot-app-modernization-faq.yml - - linkListType: how-to-guide + - linkListType: concept links: - - text: How to upgrade a .NET app - url: ../../core/porting/how-to-upgrade-with-github-copilot.md + - text: Using Copilot to speed up porting and modernization + url: ../../core/porting/github-copilot-app-modernization-overview.md#how-does-it-work - title: Migrate .NET apps to Azure linkLists: diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 584f270366054..42e5ce7caf89b 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -3,124 +3,128 @@ items: href: index.yml - name: Overview href: ../../core/porting/index.md - - name: FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml - displayName: copilot, upgrade, faq - - name: Upgrade .NET apps + - name: Use GitHub Copilot to upgrade expanded: true items: - - name: Overview - href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade, faq - - name: How to upgrade with GitHub Copilot - href: ../../core/porting/how-to-upgrade-with-github-copilot.md - - name: Planning your .NET Framework upgrade + - name: Upgrade .NET apps + expanded: true items: - name: Overview - href: ../../core/porting/framework-overview.md - - name: Upgrade with GitHub Copilot href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade, modernization - - name: General information + displayName: copilot, upgrade + - name: How to upgrade with GitHub Copilot + href: ../../core/porting/how-to-upgrade-with-github-copilot.md + displayName: copilot, upgrade + - name: FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml + displayName: copilot, upgrade + - name: Migrate .NET apps to Azure + expanded: false + items: + - name: Overview + href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Migrate a .NET project + href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Migration sample + href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Troubleshooting + href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + + - name: Plan an upgrade from .NET Framework + items: + - name: Overview + href: ../../core/porting/framework-overview.md + - name: Upgrade with GitHub Copilot + href: ../../core/porting/github-copilot-app-modernization-overview.md + displayName: copilot, upgrade, modernization + - name: General information + items: + - name: About .NET items: - - name: About .NET - items: - - name: Versioning info for .NET SDK, MSBuild, and Visual Studio - href: ../../core/porting/versioning-sdk-msbuild-vs.md - - name: Choose between .NET and .NET Framework for server apps - href: ../../standard/choosing-core-framework-server.md + - name: Versioning info for .NET SDK, MSBuild, and Visual Studio + href: ../../core/porting/versioning-sdk-msbuild-vs.md + - name: Choose between .NET and .NET Framework for server apps + href: ../../standard/choosing-core-framework-server.md + - name: Breaking changes + items: + - name: Overview + displayName: app compatibility + href: ../../core/porting/breaking-changes.md - name: Breaking changes - items: - - name: Overview - displayName: app compatibility - href: ../../core/porting/breaking-changes.md - - name: Breaking changes - href: ../../core/compatibility/fx-core.md - - name: Pre-upgrade - expanded: false + href: ../../core/compatibility/fx-core.md + - name: Pre-upgrade + expanded: false + items: + - name: Assess the portability of your project items: - - name: Assess the portability of your project + - name: Unsupported dependencies + href: ../../core/porting/third-party-deps.md + - name: Use the Windows Compatibility Pack + href: ../../core/porting/windows-compat-pack.md + - name: Unavailable technologies + href: ../../core/porting/net-framework-tech-unavailable.md + - name: Unsupported APIs items: - - name: Unsupported dependencies - href: ../../core/porting/third-party-deps.md - - name: Use the Windows Compatibility Pack - href: ../../core/porting/windows-compat-pack.md - - name: Unavailable technologies - href: ../../core/porting/net-framework-tech-unavailable.md - - name: Unsupported APIs - items: - - name: Tools to find unsupported APIs - href: ../../core/porting/unsupported-apis.md - - name: Unsupported API list - href: ../../core/compatibility/unsupported-apis.md - - name: Needed changes before porting code - href: ../../core/porting/premigration-needed-changes.md - - name: Upgrade - expanded: false + - name: Tools to find unsupported APIs + href: ../../core/porting/unsupported-apis.md + - name: Unsupported API list + href: ../../core/compatibility/unsupported-apis.md + - name: Needed changes before porting code + href: ../../core/porting/premigration-needed-changes.md + - name: Upgrade + expanded: false + items: + - name: Create a porting plan items: - - name: Create a porting plan - items: - - name: Approaches - href: ../../core/porting/porting-approaches.md - - name: Project structure - href: ../../core/porting/project-structure.md - - name: Application porting guides - items: - - name: Windows Forms - href: /dotnet/desktop/winforms/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: Windows Presentation Foundation - href: /dotnet/desktop/wpf/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: C++/CLI projects - href: ../../core/porting/cpp-cli.md - - name: Post-Upgrade - expanded: false + - name: Approaches + href: ../../core/porting/porting-approaches.md + - name: Project structure + href: ../../core/porting/project-structure.md + - name: Application porting guides items: - - name: Modernize - href: ../../core/porting/modernize.md - - name: Other tools + - name: Windows Forms + href: /dotnet/desktop/winforms/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Windows Presentation Foundation + href: /dotnet/desktop/wpf/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: C++/CLI projects + href: ../../core/porting/cpp-cli.md + - name: Post-Upgrade + expanded: false items: - - name: .NET Upgrade Assistant tool + - name: Modernize + href: ../../core/porting/modernize.md + - name: Other tools + items: + - name: .NET Upgrade Assistant tool + items: + - name: Overview + href: ../../core/porting/upgrade-assistant-overview.md + displayName: upgrade assistant + - name: Install + href: ../../core/porting/upgrade-assistant-install.md + displayName: upgrade assistant + - name: How to upgrade + href: ../../core/porting/upgrade-assistant-how-to-upgrade.md + displayName: upgrade assistant + - name: Analyze items: - name: Overview - href: ../../core/porting/upgrade-assistant-overview.md - displayName: upgrade assistant - - name: Install - href: ../../core/porting/upgrade-assistant-install.md + href: ../../core/porting/upgrade-assistant-analyze-overview.md displayName: upgrade assistant - - name: How to upgrade - href: ../../core/porting/upgrade-assistant-how-to-upgrade.md + - name: How to analyze a project + href: ../../core/porting/upgrade-assistant-how-to-analyze.md displayName: upgrade assistant - - name: Analyze - items: - - name: Overview - href: ../../core/porting/upgrade-assistant-analyze-overview.md - displayName: upgrade assistant - - name: How to analyze a project - href: ../../core/porting/upgrade-assistant-how-to-analyze.md - displayName: upgrade assistant - - name: Project upgrade guide - items: - - name: ASP.NET - href: /aspnet/core/migration/fx-to-core/tooling - - name: Windows Presentation Foundation - href: /dotnet/desktop/wpf/migration/ - - name: Windows Forms - href: /dotnet/desktop/winforms/migration/ - - name: Universal Windows Platform - href: /windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/upgrade-assistant - - name: Windows Communication Foundation - href: ../../core/porting/upgrade-assistant-wcf.md - - name: Telemetry - href: ../../core/porting/upgrade-assistant-telemetry.md - - - name: Migrate .NET apps to Azure - expanded: true - items: - - name: Overview - href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: Migrate a .NET project - href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: Migration sample - href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: Troubleshooting - href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Project upgrade guide + items: + - name: ASP.NET + href: /aspnet/core/migration/fx-to-core/tooling + - name: Windows Presentation Foundation + href: /dotnet/desktop/wpf/migration/ + - name: Windows Forms + href: /dotnet/desktop/winforms/migration/ + - name: Universal Windows Platform + href: /windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/upgrade-assistant + - name: Windows Communication Foundation + href: ../../core/porting/upgrade-assistant-wcf.md + - name: Telemetry + href: ../../core/porting/upgrade-assistant-telemetry.md From 39499bc0ebf7847b0b89760a764b74ebd61835fb Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 21:29:35 -0700 Subject: [PATCH 30/38] Fix the TOC crosslinking --- docs/navigate/migration-guide/toc.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 42e5ce7caf89b..a982129f39b7a 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -7,16 +7,16 @@ items: expanded: true items: - name: Upgrade .NET apps - expanded: true + expanded: false items: - name: Overview - href: ../../core/porting/github-copilot-app-modernization-overview.md + href: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade - name: How to upgrade with GitHub Copilot - href: ../../core/porting/how-to-upgrade-with-github-copilot.md + href: ../../core/porting/how-to-upgrade-with-github-copilot.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade - name: FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml + href: ../../core/porting/github-copilot-app-modernization-faq.yml?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade - name: Migrate .NET apps to Azure expanded: false @@ -35,7 +35,7 @@ items: - name: Overview href: ../../core/porting/framework-overview.md - name: Upgrade with GitHub Copilot - href: ../../core/porting/github-copilot-app-modernization-overview.md + href: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade, modernization - name: General information items: From 63ed0ef5ef3fa7f446b8bd12107a7327ad3a64de Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 21:42:25 -0700 Subject: [PATCH 31/38] Actually fix the TOC crosslinking --- docs/navigate/github-copilot-modernize/index.yml | 8 ++++---- docs/navigate/github-copilot-modernize/toc.yml | 8 ++++---- docs/navigate/migration-guide/index.yml | 8 ++++---- docs/navigate/migration-guide/toc.yml | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/navigate/github-copilot-modernize/index.yml b/docs/navigate/github-copilot-modernize/index.yml index 241014cf08d71..b63ff403a9b34 100644 --- a/docs/navigate/github-copilot-modernize/index.yml +++ b/docs/navigate/github-copilot-modernize/index.yml @@ -29,17 +29,17 @@ landingContent: - linkListType: overview links: - text: Migrate .NET apps to Azure (app modernization) - url: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - text: Azure migration quickstart - url: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - linkListType: sample links: - text: Migration sample - url: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - linkListType: concept links: - text: Azure migration FAQ - url: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - title: Get help and community linkLists: diff --git a/docs/navigate/github-copilot-modernize/toc.yml b/docs/navigate/github-copilot-modernize/toc.yml index b7ef2872e4ed9..f5e5460ba7983 100644 --- a/docs/navigate/github-copilot-modernize/toc.yml +++ b/docs/navigate/github-copilot-modernize/toc.yml @@ -17,10 +17,10 @@ items: expanded: true items: - name: Overview - href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migrate a .NET project - href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample - href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Troubleshooting - href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index aa19ea8c3834b..61b39eaad6064 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -18,7 +18,7 @@ landingContent: - text: Upgrade apps to the latest version of .NET url: ../../core/porting/index.md - text: Use GitHub Copilot to assist in upgrading - url: ../../core/porting/github-copilot-app-modernization-overview.md + url: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - text: Planning your .NET Framework upgrade url: ../../core/porting/framework-overview.md - linkListType: concept @@ -34,13 +34,13 @@ landingContent: - linkListType: overview links: - text: GitHub Copilot app modernization overview - url: ../../core/porting/github-copilot-app-modernization-overview.md + url: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - text: GitHub Copilot app modernization FAQ - url: ../../core/porting/github-copilot-app-modernization-faq.yml + url: ../../core/porting/github-copilot-app-modernization-faq.yml?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - linkListType: concept links: - text: Using Copilot to speed up porting and modernization - url: ../../core/porting/github-copilot-app-modernization-overview.md#how-does-it-work + url: ../../core/porting/github-copilot-app-modernization-overview.md#how-does-it-work?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - title: Migrate .NET apps to Azure linkLists: diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index a982129f39b7a..cd730b15cf33b 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -10,13 +10,13 @@ items: expanded: false items: - name: Overview - href: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade - name: How to upgrade with GitHub Copilot - href: ../../core/porting/how-to-upgrade-with-github-copilot.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../core/porting/how-to-upgrade-with-github-copilot.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade - name: FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../core/porting/github-copilot-app-modernization-faq.yml?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade - name: Migrate .NET apps to Azure expanded: false @@ -35,7 +35,7 @@ items: - name: Overview href: ../../core/porting/framework-overview.md - name: Upgrade with GitHub Copilot - href: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade, modernization - name: General information items: From 314985b99d0d56a627bbb2d9899763bd6f192274 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Mon, 15 Sep 2025 21:49:02 -0700 Subject: [PATCH 32/38] Adjust # --- docs/navigate/migration-guide/index.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index 61b39eaad6064..08eec629c45de 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -40,7 +40,7 @@ landingContent: - linkListType: concept links: - text: Using Copilot to speed up porting and modernization - url: ../../core/porting/github-copilot-app-modernization-overview.md#how-does-it-work?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json#how-does-it-work - title: Migrate .NET apps to Azure linkLists: From b26ad8841637121d7817862f2654938c1eeaf26a Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Tue, 16 Sep 2025 11:15:49 -0700 Subject: [PATCH 33/38] Adjust TOC --- docs/navigate/github-copilot-modernize/toc.yml | 8 +++----- docs/navigate/migration-guide/toc.yml | 14 ++++++-------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/docs/navigate/github-copilot-modernize/toc.yml b/docs/navigate/github-copilot-modernize/toc.yml index f5e5460ba7983..d74260342611c 100644 --- a/docs/navigate/github-copilot-modernize/toc.yml +++ b/docs/navigate/github-copilot-modernize/toc.yml @@ -1,23 +1,21 @@ items: - name: GitHub Copilot app modernization for .NET href: index.yml + - name: Overview + href: ../../core/porting/github-copilot-app-modernization-overview.md - name: FAQ href: ../../core/porting/github-copilot-app-modernization-faq.yml displayName: copilot, upgrade + - name: Upgrade .NET apps expanded: true items: - - name: Overview - href: ../../core/porting/github-copilot-app-modernization-overview.md - displayName: copilot, upgrade - name: How to upgrade with GitHub Copilot href: ../../core/porting/how-to-upgrade-with-github-copilot.md - name: Migrate .NET apps to Azure expanded: true items: - - name: Overview - href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migrate a .NET project href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index cd730b15cf33b..bffe35c705386 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -6,23 +6,21 @@ items: - name: Use GitHub Copilot to upgrade expanded: true items: + - name: Overview + href: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + displayName: copilot, upgrade + - name: FAQ + href: ../../core/porting/github-copilot-app-modernization-faq.yml?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + displayName: copilot, upgrade - name: Upgrade .NET apps expanded: false items: - - name: Overview - href: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - displayName: copilot, upgrade - name: How to upgrade with GitHub Copilot href: ../../core/porting/how-to-upgrade-with-github-copilot.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json displayName: copilot, upgrade - - name: FAQ - href: ../../core/porting/github-copilot-app-modernization-faq.yml?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - displayName: copilot, upgrade - name: Migrate .NET apps to Azure expanded: false items: - - name: Overview - href: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migrate a .NET project href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample From c2f2fffae117ce7b758f016182dc31692a6a1aa4 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Tue, 16 Sep 2025 11:30:37 -0700 Subject: [PATCH 34/38] Add the predefined info --- ...thub-copilot-app-modernization-overview.md | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 906012c6fa9de..b6c6377344fe8 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -13,7 +13,7 @@ ms.date: 09/15/2025 # What is GitHub Copilot app modernization -GitHub Copilot app modernization is a GitHub Copilot agent that helps upgrade projects to newer versions of .NET and migrate .NET applications to Azure quickly and confidently by guiding you through assessment, solution recommendations, code fixes, and validation - all within Visual Studio. +GitHub Copilot app modernization is a GitHub Copilot agent that helps upgrade projects to newer versions of .NET and migrate .NET applications to Azure quickly and confidently by guiding you through assessment, solution recommendations, code fixes, and validation - all within Visual Studio. This process streamlines modernization and boosts developer productivity and confidence. GitHub Copilot app modernization is an all-in-one upgrade and migration assistant that uses AI to improve developer velocity, quality, and results. @@ -98,9 +98,49 @@ The modernization agent combines automated analysis, AI-driven code remediation, Deploy to Azure effortlessly, taking your code from development to cloud faster than ever. +### Predefined tasks for migration + +Predefined tasks capture industry best practices for using Azure services. Currently, App Modernization for .NET (Preview) offers predefined tasks that cover common migration scenarios. + +- **Migrate to Managed Identity based Database on Azure, including Azure SQL DB, Azure SQL MI and Azure PostgreSQL** + + Modernize your data layer by migrating from on-premises or legacy databases (such as DB2, Oracle DB, or SQL Server) to Azure SQL DB, Azure SQL Managed Instance or Azure PostgreSQL, using secure managed identity authentication. + +- **Migrate to Azure File Storage** + + Move file I/O operations from the local file system to Azure File Storage for scalable, cloud-based file management. + +- **Migrate to Azure Blob Storage** + + Replace on-premises or cross-cloud object storage, or local file system file I/O, with Azure Blob Storage for unstructured data. + +- **Migrate to Microsoft Entra ID** + + Transition authentication and authorization from Windows Active Directory to Microsoft Entra ID (formerly Azure AD) for modern identity management. + +- **Migrate to secured credentials with Managed Identity and Azure Key Vault** + + Replace plaintext credentials in configuration or code with secure, managed identities and Azure Key Vault for secrets management. + +- **Migrate to Azure Service Bus** + + Move from legacy or third-party message queues (such as MSMQ or RabbitMQ) to Azure Service Bus for reliable, cloud-based messaging. + +- **Migrate to Azure Communication Service email** + + Replace direct SMTP email sending with Azure Communication Service for scalable, secure email delivery. + +- **Migrate to Confluent Cloud/Azure Event Hub for Apache Kafka** + + Transition from local or on-premises Kafka to managed event streaming with Confluent Cloud or Azure Event Hubs. + +- **Migrate to OpenTelemetry on Azure** + + Transition from local logging frameworks like log4net, serilog, windows event log to OpenTelemetry on Azure. + ## How does it work -Once you request the Modernization agent to upgrade or migrate your app, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade or migration. After you answer these questions, a plan is written in the form of a Markdown file. If you tell Copilot to proceed with the upgrade or migration, it follows the steps described in the plan. +Once you request the modernization agent to upgrade or migrate your app, Copilot analyzes your projects and their dependencies, and then asks you a series of questions about the upgrade or migration. After you answer these questions, a plan is written in the form of a Markdown file. If you tell Copilot to proceed with the upgrade or migration, it follows the steps described in the plan. You can adjust the plan by editing the Markdown file to change the upgrade steps or add more context. From fe79022187e9f483167a4a463b28cbc9affce06d Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Tue, 16 Sep 2025 12:13:30 -0700 Subject: [PATCH 35/38] Fix term --- docs/navigate/github-copilot-modernize/index.yml | 6 +++--- docs/navigate/migration-guide/index.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/navigate/github-copilot-modernize/index.yml b/docs/navigate/github-copilot-modernize/index.yml index b63ff403a9b34..de615e89aedbe 100644 --- a/docs/navigate/github-copilot-modernize/index.yml +++ b/docs/navigate/github-copilot-modernize/index.yml @@ -1,11 +1,11 @@ ### YamlMime:Landing -title: Use GitHub Copilot to upgrade .NET apps +title: Use GitHub Copilot to upgrade and migrate .NET apps summary: Learn about updating and migrating .NET apps with GitHub Copilot. metadata: - title: Use GitHub Copilot to upgrade .NET apps - description: Learn about updating apps from .NET Framework to .NET with GitHub Copilot. + title: Use GitHub Copilot to upgrade and migrate .NET apps + description: Learn about updating and migrating .NET apps with GitHub Copilot. ms.topic: landing-page ms.date: 09/15/2025 diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index 08eec629c45de..db7ff1a7e1ee3 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -1,11 +1,11 @@ ### YamlMime:Landing title: Upgrade .NET apps documentation -summary: Learn about migrating apps from .NET Framework to .NET. +summary: Learn about upgrading apps from .NET Framework to .NET. metadata: title: Upgrade .NET apps documentation - description: Learn about migrating apps from .NET Framework to .NET. + description: Learn about upgrading apps from .NET Framework to .NET. ms.topic: landing-page ms.date: 09/15/2025 From 8d9b21d990be8988c970fe74f003a04c76c3c290 Mon Sep 17 00:00:00 2001 From: "Andy (Steve) De George" <67293991+adegeo@users.noreply.github.com> Date: Tue, 16 Sep 2025 13:23:05 -0700 Subject: [PATCH 36/38] Apply suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> --- docs/core/porting/framework-overview.md | 4 ++-- docs/core/porting/github-copilot-app-modernization-faq.yml | 2 +- docs/core/porting/github-copilot-app-modernization-install.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/core/porting/framework-overview.md b/docs/core/porting/framework-overview.md index 4ee0244627a15..2b44ca1f2241c 100644 --- a/docs/core/porting/framework-overview.md +++ b/docs/core/porting/framework-overview.md @@ -125,7 +125,7 @@ Even if you use a tool to help port your application, you should review the [Con ### GitHub Copilot app modernization assistant -[GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) is a GitHub Copilot chat assistant helps you plan and upgrade projects to newer versions of .NET, migrate to Azure, update dependencies, and apply code fixes. Azure migration is powered by [Application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md) +[GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) is a GitHub Copilot chat assistant that helps you plan and upgrade projects to newer versions of .NET, migrate to Azure, update dependencies, and apply code fixes. Azure migration is powered by [Application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md) This chat assistant supports the following upgrade paths: @@ -148,7 +148,7 @@ It also works on various project types, such as: Use GitHub Copilot app modernization when you want an AI-powered, end-to-end experience to upgrade .NET Framework projects and dependencies to modern .NET—covering assessment, planning, remediation, and guidance for migrating applications to Azure. -### Application and Code Assessment for .NET +### Application and code assessment for .NET [Azure Migrate application and code assessment for .NET](../../azure/migration/appcat/app-code-assessment-toolkit.md) provides code and application analysis, along with recommendations for planning cloud deployments. It helps you confidently run business-critical solutions in the cloud by offering a developer-focused assessment of your source code. The tool also provides recommendations and examples to optimize code and configurations for Azure, following industry best practices. diff --git a/docs/core/porting/github-copilot-app-modernization-faq.yml b/docs/core/porting/github-copilot-app-modernization-faq.yml index 9b559d8adf147..175f61004bd8e 100644 --- a/docs/core/porting/github-copilot-app-modernization-faq.yml +++ b/docs/core/porting/github-copilot-app-modernization-faq.yml @@ -22,7 +22,7 @@ summary: | GitHub Copilot app modernization is included in [Visual Studio 2022 version 17.14.16 or newer](https://visualstudio.microsoft.com/downloads/). sections: - - name: Modernization Agent + - name: Modernization agent questions: - question: What can the agent do? answer: | diff --git a/docs/core/porting/github-copilot-app-modernization-install.md b/docs/core/porting/github-copilot-app-modernization-install.md index c2ab96c700e32..e919c6e8633c3 100644 --- a/docs/core/porting/github-copilot-app-modernization-install.md +++ b/docs/core/porting/github-copilot-app-modernization-install.md @@ -13,10 +13,10 @@ ms.date: 09/15/2025 # Install GitHub Copilot app modernization -This article guides you through installing GitHub Copilot app modernization extension in Visual Studio. +This article guides you through installing the GitHub Copilot app modernization extension in Visual Studio. > [!IMPORTANT] -> The GitHub Copilot Modernization agent is included in Visual Studio, starting with versions Visual Studio 2022 17.14.16 and Visual Studio 2026. +> The GitHub Copilot Modernization agent is included in Visual Studio, starting with Visual Studio 2022 17.14.16 and Visual Studio 2026. ## Prerequisites From f3e31b4e4e3bb6be17baa8008fbf0a4fa677df51 Mon Sep 17 00:00:00 2001 From: "Andy De George (from Dev Box)" Date: Tue, 16 Sep 2025 13:34:04 -0700 Subject: [PATCH 37/38] Feedback fixes --- docs/core/porting/framework-overview.md | 22 +++++++++---------- .../github-copilot-app-modernization-faq.yml | 2 +- .../porting/upgrade-assistant-overview.md | 2 +- .../github-copilot-modernize/index.yml | 8 +++---- .../navigate/github-copilot-modernize/toc.yml | 6 ++--- docs/navigate/migration-guide/index.yml | 8 +++---- docs/navigate/migration-guide/toc.yml | 6 ++--- 7 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/core/porting/framework-overview.md b/docs/core/porting/framework-overview.md index 4ee0244627a15..b685fd164531e 100644 --- a/docs/core/porting/framework-overview.md +++ b/docs/core/porting/framework-overview.md @@ -8,7 +8,7 @@ no-loc: ["package.config", PackageReference] --- # Overview of porting from .NET Framework to .NET -This article provides an overview of what you should consider when porting your code from .NET Framework to .NET (formerly named .NET Core). Porting to .NET from .NET Framework is relatively straightforward for many projects. The complexity of your projects dictates how much work you'll need to do after the initial migration of the project files. +This article provides an overview of what you should consider when porting your code from .NET Framework to .NET (formerly named .NET Core). Porting to .NET from .NET Framework is relatively straightforward for many projects. The complexity of your projects dictates how much work you'll need to do after the initial upgrade of the project files. Projects where the app model is available in .NET, such as libraries, console apps, and desktop apps, usually require little change. Projects that require a new app model, such as moving to [ASP.NET Core from ASP.NET](/aspnet/core/migration/proper-to-2x/), require more work. Many patterns from the old app model have equivalents that can be used during the conversion. @@ -16,7 +16,7 @@ Projects where the app model is available in .NET, such as libraries, console ap Many applications created for .NET Framework use a desktop technology such as Windows Forms or Windows Presentation Foundation (WPF). Both Windows Forms and WPF are available in .NET, but they remain Windows-only technologies. -Consider the following dependencies before you migrate a Windows Forms or WPF application: +Consider the following dependencies before you upgrade a Windows Forms or WPF application: - Project files for .NET use a different format than .NET Framework. - Your project might use an API that isn't available in .NET. @@ -25,10 +25,10 @@ Consider the following dependencies before you migrate a Windows Forms or WPF ap .NET uses the open-source versions of Windows Forms and WPF and includes enhancements over .NET Framework. -For tutorials on migrating your desktop application to .NET, see one of the following articles: +For tutorials on upgrading your desktop application to .NET, see one of the following articles: - [How to upgrade a WPF desktop app to .NET](/dotnet/desktop/wpf/migration/) -- [Migrate .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/) +- [Upgrade .NET Framework Windows Forms apps to .NET](/dotnet/desktop/winforms/migration/) ## Windows-specific APIs @@ -119,7 +119,7 @@ It's possible that your library or console-based application can be used cross-p ## Tools to assist porting -Instead of manually porting an application from .NET Framework to .NET, you can use different tools to help automate some aspects of the migration. Porting a complex project is, in itself, a complex process. The tools might help in that journey. +Instead of manually porting an application from .NET Framework to .NET, you can use different tools to help automate some aspects of the upgrade. Porting a complex project is, in itself, a complex process. The tools might help in that journey. Even if you use a tool to help port your application, you should review the [Considerations when porting section](#considerations-when-porting) in this article. @@ -160,7 +160,7 @@ Use the Azure Migrate application and code assessment for .NET toolset for an as ### .NET Upgrade Assistant -The [.NET Upgrade Assistant](upgrade-assistant-overview.md) is a command-line tool that can be run on different kinds of .NET Framework apps. It's designed to assist with upgrading .NET Framework apps to .NET. After running the tool, **in most cases the app will require more effort to complete the migration**. The tool includes the installation of analyzers that can assist with completing the migration. This tool works on the following types of .NET Framework applications: +The [.NET Upgrade Assistant](upgrade-assistant-overview.md) is a command-line tool that can be run on different kinds of .NET Framework apps. It's designed to assist with upgrading .NET Framework apps to .NET. After running the tool, **in most cases the app will require more effort to complete the upgrade**. The tool includes the installation of analyzers that can assist with completing the upgrade. This tool works on the following types of .NET Framework applications: - Windows Forms - WPF @@ -168,11 +168,11 @@ The [.NET Upgrade Assistant](upgrade-assistant-overview.md) is a command-line to - Console - Class libraries -This tool uses the other tools listed in this article, such as **try-convert**, and guides the migration process. For more information about the tool, see [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md). +This tool uses the other tools listed in this article, such as **try-convert**, and guides the upgrade process. For more information about the tool, see [Overview of the .NET Upgrade Assistant](upgrade-assistant-overview.md). **When to use:** -Use .NET Upgrade Assistant to upgrade .NET Framework apps to newer versions of .NET. This tool provides an alternative to the AI powered GitHub Copilot App Modernization – Upgrade for .NET experience. +Use when an AI powered solution like GitHub Copilot app modernization isn't available. ### `try-convert` @@ -190,11 +190,11 @@ For more information, see [Platform compatibility analyzer](../../standard/analy When porting your application to .NET, consider the following suggestions in order: -✔️ CONSIDER using the [GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) to migrate your projects. GitHub Copilot is powerful at identifying and fixing incompatibilities when porting. It automates most of the manual steps detailed in this article and gives you a great starting point for continuing your migration path. +✔️ CONSIDER using the [GitHub Copilot app modernization](github-copilot-app-modernization-overview.md) to upgrade your projects. GitHub Copilot is powerful at identifying and fixing incompatibilities when porting. It automates most of the manual steps detailed in this article and gives you a great starting point for continuing your upgrade path. ✔️ CONSIDER examining your dependencies first. Your dependencies must target .NET, .NET Standard, or .NET Core. -✔️ DO migrate from a NuGet _packages.config_ file to [PackageReference](/nuget/consume-packages/package-references-in-project-files) settings in the project file. Use Visual Studio to [convert the _package.config_ file](/nuget/consume-packages/migrate-packages-config-to-package-reference#migration-steps). +✔️ DO upgrade from a NuGet _packages.config_ file to [PackageReference](/nuget/consume-packages/package-references-in-project-files) settings in the project file. Use Visual Studio to [convert the _package.config_ file](/nuget/consume-packages/migrate-packages-config-to-package-reference#migration-steps). ✔️ CONSIDER upgrading to the latest project file format even if you can't yet port your app. .NET Framework projects use an outdated project format. Even though the latest project format, known as SDK-style projects, was created for .NET Core and beyond, the format also works with .NET Framework. Having your project file in the latest format gives you a good basis for porting your app in the future. @@ -204,7 +204,7 @@ When porting your application to .NET, consider the following suggestions in ord ✔️ DO target .NET 8+ for **Windows Forms and WPF** projects. .NET 8 and later versions contain many improvements for Desktop apps. -✔️ CONSIDER targeting .NET Standard 2.0 if you're migrating a library that might also be used with .NET Framework projects. You can also multitarget your library, targeting both .NET Framework and .NET Standard. +✔️ CONSIDER targeting .NET Standard 2.0 if you're upgrading a library that might also be used with .NET Framework projects. You can also multitarget your library, targeting both .NET Framework and .NET Standard. ✔️ DO add reference to the [Microsoft.Windows.Compatibility NuGet package](https://www.nuget.org/packages/Microsoft.Windows.Compatibility) if, after migrating, you get errors of missing APIs. A large portion of the .NET Framework API surface is available to .NET via the NuGet package. diff --git a/docs/core/porting/github-copilot-app-modernization-faq.yml b/docs/core/porting/github-copilot-app-modernization-faq.yml index 9b559d8adf147..8d0fd49d11621 100644 --- a/docs/core/porting/github-copilot-app-modernization-faq.yml +++ b/docs/core/porting/github-copilot-app-modernization-faq.yml @@ -54,7 +54,7 @@ sections: - question: Does the agent store my source code? answer: | - We never store a user's codebase and never use your code for training the model. Once an upgrade is complete, session data is deleted. + The agent never stores a user's codebase and never uses your code for training the model. Once an upgrade is complete, session data is deleted. - question: Can I provide feedback? answer: | diff --git a/docs/core/porting/upgrade-assistant-overview.md b/docs/core/porting/upgrade-assistant-overview.md index 3cba16ac00160..5260ab914191b 100644 --- a/docs/core/porting/upgrade-assistant-overview.md +++ b/docs/core/porting/upgrade-assistant-overview.md @@ -12,7 +12,7 @@ ms.date: 10/08/2024 # What is .NET Upgrade Assistant? -.NET Upgrade Assistant helps upgrade projects to newer versions of .NET and analyzes your code to spot and fix potential incompatibilities. One focus of the tool is to help migrate a project from .NET Framework, .NET Core, or .NET, to the latest version of .NET. You use the extension or tool to upgrade entire .NET projects, or some aspect of the project, such migrating a configuration file from an older type to a newer type. +.NET Upgrade Assistant helps upgrade projects to newer versions of .NET and analyzes your code to spot and fix potential incompatibilities. One focus of the tool is to help upgrading a project from .NET Framework, .NET Core, or .NET, to the latest version of .NET. You use the extension or tool to upgrade entire .NET projects, or some aspect of the project, such upgrading a configuration file from an older type to a newer type. .NET Upgrade Assistant is distributed as a Visual Studio extension or a command-line interface (CLI) tool. diff --git a/docs/navigate/github-copilot-modernize/index.yml b/docs/navigate/github-copilot-modernize/index.yml index de615e89aedbe..16425d73be024 100644 --- a/docs/navigate/github-copilot-modernize/index.yml +++ b/docs/navigate/github-copilot-modernize/index.yml @@ -29,17 +29,17 @@ landingContent: - linkListType: overview links: - text: Migrate .NET apps to Azure (app modernization) - url: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../azure/migration/appmod/overview.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - text: Azure migration quickstart - url: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../azure/migration/appmod/quickstart.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - linkListType: sample links: - text: Migration sample - url: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../azure/migration/appmod/sample.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - linkListType: concept links: - text: Azure migration FAQ - url: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../azure/migration/appmod/faq.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - title: Get help and community linkLists: diff --git a/docs/navigate/github-copilot-modernize/toc.yml b/docs/navigate/github-copilot-modernize/toc.yml index d74260342611c..f319a66dfcc53 100644 --- a/docs/navigate/github-copilot-modernize/toc.yml +++ b/docs/navigate/github-copilot-modernize/toc.yml @@ -17,8 +17,8 @@ items: expanded: true items: - name: Migrate a .NET project - href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../azure/migration/appmod/quickstart.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample - href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../azure/migration/appmod/sample.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Troubleshooting - href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../azure/migration/appmod/faq.md?toc=/dotnet/navigate/github-copilot-modernize/toc.json&bc=/dotnet/breadcrumb/toc.json diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index db7ff1a7e1ee3..338a1717d228c 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -47,17 +47,17 @@ landingContent: - linkListType: overview links: - text: Migrate .NET apps to Azure (app modernization) - url: /dotnet/azure/migration/appmod/overview?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../azure/migration/appmod/overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - text: Azure migration quickstart - url: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../azure/migration/appmod/quickstart.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - linkListType: sample links: - text: Migration sample - url: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../azure/migration/appmod/sample.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - linkListType: concept links: - text: Azure migration FAQ - url: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + url: ../../core/porting/github-copilot-app-modernization-faq.yml?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - title: Get help and community linkLists: diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index bffe35c705386..3c4d387ded87e 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -22,11 +22,11 @@ items: expanded: false items: - name: Migrate a .NET project - href: /dotnet/azure/migration/appmod/quickstart?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../azure/migration/appmod/quickstart.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Migration sample - href: /dotnet/azure/migration/appmod/sample?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../azure/migration/appmod/sample.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Troubleshooting - href: /dotnet/azure/migration/appmod/faq?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json + href: ../../azure/migration/appmod/faq.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Plan an upgrade from .NET Framework items: From 9e76a5bbb998350b277004a76140806dbe525f3a Mon Sep 17 00:00:00 2001 From: "Andy (Steve) De George" <67293991+adegeo@users.noreply.github.com> Date: Tue, 16 Sep 2025 13:37:06 -0700 Subject: [PATCH 38/38] Apply suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> --- .../github-copilot-app-modernization-overview.md | 10 +++++----- docs/navigate/migration-guide/index.yml | 2 +- docs/navigate/migration-guide/toc.yml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index b6c6377344fe8..258f09a2771bf 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -29,7 +29,7 @@ With this assistant, you can: ## Provide feedback -Feedback is important to Microsoft and the efficiency of this agent. Use the [Suggest a feature](/visualstudio/ide/suggest-a-feature) and [Report a Problem](/visualstudio/ide/report-a-problem) features of in Visual Studio to provide feedback. +Feedback is important to Microsoft and the efficiency of this agent. Use the [Suggest a feature](/visualstudio/ide/suggest-a-feature) and [Report a problem](/visualstudio/ide/report-a-problem) features of Visual Studio to provide feedback. ## Prerequisites @@ -92,7 +92,7 @@ The modernization agent combines automated analysis, AI-driven code remediation, - Automatic Build and CVE Resolution. - automatically builds your app and resolves compilation errors and vulnerabilities, streamlining development. + Automatically builds your app and resolves compilation errors and vulnerabilities, streamlining development. - Seamless Deployment. @@ -102,9 +102,9 @@ The modernization agent combines automated analysis, AI-driven code remediation, Predefined tasks capture industry best practices for using Azure services. Currently, App Modernization for .NET (Preview) offers predefined tasks that cover common migration scenarios. -- **Migrate to Managed Identity based Database on Azure, including Azure SQL DB, Azure SQL MI and Azure PostgreSQL** +- **Migrate to Managed Identity based Database on Azure, including Azure SQL DB, Azure SQL MI, and Azure PostgreSQL** - Modernize your data layer by migrating from on-premises or legacy databases (such as DB2, Oracle DB, or SQL Server) to Azure SQL DB, Azure SQL Managed Instance or Azure PostgreSQL, using secure managed identity authentication. + Modernize your data layer by migrating from on-premises or legacy databases (such as DB2, Oracle DB, or SQL Server) to Azure SQL DB, Azure SQL Managed Instance, or Azure PostgreSQL, using secure managed identity authentication. - **Migrate to Azure File Storage** @@ -136,7 +136,7 @@ Predefined tasks capture industry best practices for using Azure services. Curre - **Migrate to OpenTelemetry on Azure** - Transition from local logging frameworks like log4net, serilog, windows event log to OpenTelemetry on Azure. + Transition from local logging frameworks like log4net, serilog, and Windows event log to OpenTelemetry on Azure. ## How does it work diff --git a/docs/navigate/migration-guide/index.yml b/docs/navigate/migration-guide/index.yml index 338a1717d228c..7fa63436eb2d4 100644 --- a/docs/navigate/migration-guide/index.yml +++ b/docs/navigate/migration-guide/index.yml @@ -19,7 +19,7 @@ landingContent: url: ../../core/porting/index.md - text: Use GitHub Copilot to assist in upgrading url: ../../core/porting/github-copilot-app-modernization-overview.md?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - - text: Planning your .NET Framework upgrade + - text: Plan your .NET Framework upgrade url: ../../core/porting/framework-overview.md - linkListType: concept links: diff --git a/docs/navigate/migration-guide/toc.yml b/docs/navigate/migration-guide/toc.yml index 3c4d387ded87e..c1a993770d468 100644 --- a/docs/navigate/migration-guide/toc.yml +++ b/docs/navigate/migration-guide/toc.yml @@ -86,7 +86,7 @@ items: href: /dotnet/desktop/wpf/migration/?toc=/dotnet/navigate/migration-guide/toc.json&bc=/dotnet/breadcrumb/toc.json - name: C++/CLI projects href: ../../core/porting/cpp-cli.md - - name: Post-Upgrade + - name: Post-upgrade expanded: false items: - name: Modernize