<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/modernizing-net-applications-1kvveo36t" -->

---
title: Modernizing .NET Applications | daily.dev
description: A live conference demo walks through modernizing legacy .NET applications using GitHub Copilot's upgrade agent, available in the GitHub Copilot app, Visual...
canonical: https://daily.dev/posts/modernizing-net-applications-1kvveo36t
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Modernizing .NET Applications | daily.dev
og:description: A live conference demo walks through modernizing legacy .NET applications using GitHub Copilot's upgrade agent, available in the GitHub Copilot app, Visual...
og:url: https://daily.dev/posts/modernizing-net-applications-1kvveo36t
og:image: https://api.daily.dev/og/posts/1kvvEO36T.png
og:image:alt: Modernizing .NET Applications
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Modernizing .NET Applications

**[.NET Blog](https://daily.dev/sources/dotnet)** · 74 min read · 1 upvotes · 0 comments

## Summary

A live conference demo walks through modernizing legacy .NET applications using GitHub Copilot's upgrade agent, available in the GitHub Copilot app, Visual Studio, VS Code, and the Copilot CLI. The presenter runs real upgrades: a Web Forms app on .NET Framework 4.6.1 moved to server-side Blazor on .NET 10, a WinForms app modernized with Claude Opus 4.5, and an MVC Music Store app upgraded using GPT-5.1. The talk covers the assess-plan-execute workflow, autopilot vs interactive modes, the strangler fig pattern using YARP for side-by-side migrations, System.Web Adapters for sharing auth/session state, test generation integration, and reasons to modernize (performance, security, hiring, unlocking new libraries). Microsoft's motivations for pushing modernization (selling cloud/AI services, retention) are discussed candidly.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=ol6Jbrp06CE>

## Questions this post answers

### How does GitHub Copilot's upgrade agent modernize a legacy .NET application?

It works through an assess-plan-execute workflow: it first assesses the app (target .NET version, NuGet updates, breaking API changes), writes a markdown plan broken into phases that a team can review and edit, then executes tasks with build validation. The same workflow is available in the GitHub Copilot app, VS Code, Visual Studio, and Copilot CLI, and it can run in interactive or autopilot mode.

_Teams weighing agentic upgrade tools for stalled legacy migrations can track how these workflows evolve on daily.dev._

### What is the recommended migration path when upgrading a legacy ASP.NET Web Forms application to .NET 10?

The recommended path is converting Web Forms to Blazor rather than ASP.NET MVC, because Blazor's component model maps more cleanly onto Web Forms' component-based structure than MVC's controller/action pattern does. A real Web Forms app on .NET Framework 4.6.1 was converted to server-side Blazor on .NET 10, fully running, in under an hour using this approach.

_Developers deciding between Blazor and MVC for a Web Forms rewrite can follow migration playbooks like this on daily.dev._

### How can I migrate a legacy ASP.NET application to ASP.NET Core gradually instead of all at once?

Use the strangler fig pattern with YARP (Yet Another Reverse Proxy), a .NET NuGet package built by Microsoft. Place an empty ASP.NET Core app in front of the legacy app; YARP checks each incoming request and proxies it to the old app unless a rewritten route exists in the new app, letting teams migrate one URL at a time while both apps run in production simultaneously. System.Web Adapters can share login and session state between the two apps during the transition.

_Engineers planning incremental legacy migrations can keep up with patterns like strangler fig and YARP on daily.dev._

## Similar posts on daily.dev

- [Today I will… Modernize a .NET application](https://daily.dev/posts/today-i-will-modernize-a-net-application-tudws7rd9) · Visual Studio Blog · 4 upvotes · 0 comments
- [A step-by-step guide to modernizing .NET applications with GitHub Copilot agent mode](https://daily.dev/posts/a-step-by-step-guide-to-modernizing-net-applications-with-github-copilot-agent-mode-lcnalhjpu) · .NET Blog · 4 upvotes · 0 comments

---

Tags: [#github](https://daily.dev/tags/github), [#.net](https://daily.dev/tags/.net), [#blazor](https://daily.dev/tags/blazor)

[View this post on daily.dev](https://daily.dev/posts/modernizing-net-applications-1kvveo36t)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Modernizing .NET Applications","url":"https://daily.dev/posts/modernizing-net-applications-1kvveo36t","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/modernizing-net-applications-1kvveo36t"},"datePublished":"2026-08-18T16:14:14.252Z","dateModified":"2026-09-13T22:00:10.132Z","description":"A live conference demo walks through modernizing legacy .NET applications using GitHub Copilot's upgrade agent, available in the GitHub Copilot app, Visual...","image":"https://i.ytimg.com/vi/ol6Jbrp06CE/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/ol6Jbrp06CE/sddefault.jpg","isAccessibleForFree":true,"articleSection":".NET Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":".NET Blog","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/f23eb59371bd4f07aeef64c4eef73266","url":"https://daily.dev/sources/dotnet"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/modernizing-net-applications-1kvveo36t","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"github,.net,blazor","timeRequired":"PT74M","video":{"@type":"VideoObject","name":"Modernizing .NET Applications","description":"A live conference demo walks through modernizing legacy .NET applications using GitHub Copilot's upgrade agent, available in the GitHub Copilot app, Visual...","thumbnailUrl":"https://i.ytimg.com/vi/ol6Jbrp06CE/sddefault.jpg","uploadDate":"2026-08-18T16:14:14.252Z","duration":"PT74M","url":"https://api.daily.dev/r/1kvvEO36T","embedUrl":"https://www.youtube.com/embed/ol6Jbrp06CE"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":".NET Blog","item":"https://daily.dev/sources/dotnet"},{"@type":"ListItem","position":3,"name":"Modernizing .NET Applications"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/modernizing-net-applications-1kvveo36t#faq","mainEntity":[{"@type":"Question","name":"How does GitHub Copilot's upgrade agent modernize a legacy .NET application?","acceptedAnswer":{"@type":"Answer","text":"It works through an assess-plan-execute workflow: it first assesses the app (target .NET version, NuGet updates, breaking API changes), writes a markdown plan broken into phases that a team can review and edit, then executes tasks with build validation. The same workflow is available in the GitHub Copilot app, VS Code, Visual Studio, and Copilot CLI, and it can run in interactive or autopilot mode. Teams weighing agentic upgrade tools for stalled legacy migrations can track how these workflows evolve on daily.dev."}},{"@type":"Question","name":"What is the recommended migration path when upgrading a legacy ASP.NET Web Forms application to .NET 10?","acceptedAnswer":{"@type":"Answer","text":"The recommended path is converting Web Forms to Blazor rather than ASP.NET MVC, because Blazor's component model maps more cleanly onto Web Forms' component-based structure than MVC's controller/action pattern does. A real Web Forms app on .NET Framework 4.6.1 was converted to server-side Blazor on .NET 10, fully running, in under an hour using this approach. Developers deciding between Blazor and MVC for a Web Forms rewrite can follow migration playbooks like this on daily.dev."}},{"@type":"Question","name":"How can I migrate a legacy ASP.NET application to ASP.NET Core gradually instead of all at once?","acceptedAnswer":{"@type":"Answer","text":"Use the strangler fig pattern with YARP (Yet Another Reverse Proxy), a .NET NuGet package built by Microsoft. Place an empty ASP.NET Core app in front of the legacy app; YARP checks each incoming request and proxies it to the old app unless a rewritten route exists in the new app, letting teams migrate one URL at a time while both apps run in production simultaneously. System.Web Adapters can share login and session state between the two apps during the transition. Engineers planning incremental legacy migrations can keep up with patterns like strangler fig and YARP on daily.dev."}}]}
```

