GitHub Copilot's app modernization agent now enables complete legacy .NET Framework-to-.NET 10 transformations in hours instead of weeks, with automated Azure Container Apps deployment.

A year ago, modernizing Jon Galloway's MVC Music Store—a classic ASP.NET MVC 5 app on .NET Framework 4.8—required weeks of manual rewrites. Today, GitHub Copilot's app modernization agent completes the same transformation in hours, deploying to Azure Container Apps with full passwordless security. This shift collapses the gap between assessment and execution, fundamentally changing modernization economics.
The Roadblock: Entity Framework 6 Limitations
In early 2025, attempts to modernize hit a hard wall: Entity Framework 6 on .NET Framework couldn't integrate with Azure's DefaultAzureCredential for managed identity. Migrating to EF Core meant rewriting the data layer, identity system, startup pipeline, and views—a week of specialized effort that stalled the project. As Microsoft's Jan Kalis noted, "We just could not add a NuGet package and call it done."
The Transformation: From Assessment to Deployment in One Workflow

GitHub Copilot's enhanced agent now handles end-to-end modernization:
- Assessment Phase: Scans code for framework gaps (.NET 4 → .NET 10), dependency conflicts, and security flaws (e.g., plaintext credentials).
- Code Modernization: Automates:
- Project conversion to SDK-style format
- EF6 → EF Core migration with
DbContextrewrite - ASP.NET Membership → ASP.NET Core Identity transition
- Key Vault integration via
Azure.Extensions.AspNetCore.Configuration.Secrets
- Infrastructure-as-Code: Generates Bicep templates and Azure Developer CLI (AZD) configurations for:
- Azure Container Apps with system-assigned managed identity
- Azure SQL with Azure AD-only authentication
- Secret injection via Container App environment variables

Why Azure Container Apps Wins for Modernized Workloads
The deployment target matters. For this scenario, Azure Container Apps outperforms alternatives:
| Capability | Container Apps | Traditional VMs | AKS |
|---|---|---|---|
| Infrastructure Management | Serverless (fully managed) | Manual | Self-managed |
| Security Integration | Native support for Managed Identity | Complex setup | Manual RBAC configuration |
| Cost Structure | Per-second billing (consumption plan) | Fixed hourly cost | Cluster overhead |
| Deployment Speed | AZD one-command provisioning (azd up) |
Scripted deployments | Complex Helm charts |
This combination eliminates credential management while maintaining container portability—critical for phased modernizations.
Business Impact: From Quarters to Hours

The productivity leap is stark:
| Phase | Early 2025 | Mid-2026 |
|---|---|---|
| Assessment | Manual | Automated |
| Code Migration | Developer-led (weeks) | Agent-generated (hours) |
| Infrastructure | Custom scripts | Bicep/AZD automation |
| Credential Security | Manual rotation | Managed Identity native |
As Kalis emphasizes: "The gap between 'knowing what to do' and 'being able to do it' collapsed. Backlog items become lunch-break tasks."
Strategic Recommendations
- Revisit .NET Framework Backlogs: Projects deemed "too expensive" may now be feasible. The GitHub Copilot app modernization agent handles data layer rewrites—the traditional bottleneck.
- Adopt AZD Early: Infrastructure-as-code generation ensures repeatable, secure deployments to Azure Container Apps.
- Prioritize Passwordless: Modernization isn't complete until credentials are eliminated via Managed Identity and Key Vault.
Legacy apps no longer require months of specialized effort. With GitHub Copilot's automation and Azure's managed services, what was once a quarterly planning item now runs before lunch.
Next Steps:
- Start modernizing .NET/Java apps with GitHub Copilot
- Explore Azure Container Apps deployment patterns

Comments
Please log in or register to join the discussion