An object-oriented programming language developed by Microsoft that can be used in .NET.
Hi @PHAM VAN NAM .
It is common for organizations running large, mature systems built on .NET Framework, ASP.NET MVC, and System.Web to face these exact modernization questions. Below is official guidance regarding VB.NET support, incremental migration strategies, and the transition path to .NET 10.
1. VB.NET Support on .NET 10 (ASP.NET Core)
To directly answer your primary question: VB.NET is not supported for developing ASP.NET Core applications (including Web API and MVC). Microsoft's official stance is that while VB.NET remains fully supported for Class Libraries, Console Apps, and Windows Desktop Apps (WinForms/WPF) on modern .NET, new web workloads in ASP.NET Core must be written in C# (or F#).
Therefore, for your Web/API layer:
- The recommended path is to rewrite the Web (ASP.NET Core MVC/Razor Pages/Blazor) and Web Service (ASP.NET Core Web API) layers using C#.
- You can, however, retain your reusable business logic in VB.NET by migrating those specific components to .NET 10 Class Libraries. C# ASP.NET Core applications can seamlessly consume modern .NET 10 VB.NET class libraries.
2. .NET Framework 4.8 Long-Term Support
If you choose to temporarily keep the existing Web application on .NET Framework 4.8:
- Support Policy: .NET Framework 4.8 is a component of the Windows operating system. Its support lifecycle is tied directly to the lifecycle of the Windows Server version it is installed on.
- If you run it on Windows Server 2022 or Windows Server 2025, it will remain supported for the duration of that OS's lifecycle (often 10 years including extended support).
- Risks: The primary risk is not losing support in the near term, but falling behind in performance, modern security features, and compatibility with new 3rd-party libraries which increasingly target modern .NET.
3. Recommended Migration Strategy
For a large enterprise system composed of many distinct screens (69 GSK screens) and batch processes, your Option D — Incremental Modernization (Strangler Fig Pattern) is highly recommended. Microsoft provides dedicated tooling and guidance for this.
Why Option D?
Rewriting a massive application (Option C) introduces significant risk and delays. Option D allows you to keep the system running while migrating route-by-route.
Your overall direction mapped out in section 9 is extremely sound and aligns with Microsoft's recommended approach.
- Side-by-Side Execution: It is fully supported to run an ASP.NET MVC app and an ASP.NET Core app side-by-side using YARP (Yet Another Reverse Proxy) or IIS URL Rewrite.
- YARP / System.Web Adapters: Microsoft provides a specific set of tools called System.Web Adapters specifically designed for this scenario. They allow the new ASP.NET Core app to act as a proxy to the old .NET Framework app, and crucially, they enable session state sharing and authentication sharing between the two applications during the transition phase.
4. Code Architecture and Shared Libraries
Your proposed architecture is correct:
C# ASP.NET Core (.NET 10) ---> VB.NET Business Common (.NET 10 Class Library)
- Target Framework: Simply target
.net10.0for the VB.NET class libraries. There is no need to target.netstandard2.0unless you explicitly still need those libraries to be consumed by the legacy .NET Framework 4.8 application at the same time. If they need to be dual-consumed during the transition, multi-targeting (<TargetFrameworks>net48;net10.0</TargetFrameworks>) is the recommended approach.
5. Managing Legacy Technologies
- ASMX Services: The recommended approach is to migrate them to ASP.NET Core Web API (using C#). ASMX is heavily tied to System.Web and cannot run on modern .NET.
- Microsoft Enterprise Library & Legacy Logging: These should be replaced by the built-in modern .NET Core features (e.g.,
Microsoft.Extensions.ConfigurationandMicrosoft.Extensions.Logging). - Web.config: Replaced by
appsettings.json, Environment Variables, or Azure Key Vault in .NET Core.
Before beginning, I strongly recommend evaluating your codebase using the .NET Upgrade Assistant. This tool can automatically analyze your Web, Batch, and Class Library projects, flag incompatible API usage (like your 3rd-party ExcelCreator if it lacks modern .NET binaries), and automatically handle parts of the project file conversion.
Helpful Reading:
- Incremental ASP.NET to ASP.NET Core migration (System.Web adapters)
- Migrate from ASP.NET Web API to ASP.NET Core
- Strangler Fig pattern (Azure Architecture Center)
The planned transition path is realistic, widely used in the enterprise space, and minimizes downtime. I recommend starting with the System.Web adapters and the .NET Upgrade Assistant to build a proof-of-concept on a single, low-risk GSK screen.
If you found my response helpful or informative, I would greatly appreciate it if you could follow this guidance or provide feedback.
Thank you.