The transition from .NET Framework to .NET5+ (.NET 5 to .NET 8) has been complicated. Some .NET Framework technologies are part of .NET5+, but many are left behind. This has made migrating from .NET Framework to .NET5+ intimidating for organizations using one or more unsupported technologies.
Even those using technologies brought into .NET5+ may run into difficulties. Any application using an unsupported dependency has the risk of not working. Unsupported third-party APIs, libraries, or any other dependencies may not be .NET5+ compatible and can break applications.
It’s important to gauge the difficulty as accurately as possible before committing to a migration plan. Luckily, many tools can help you do just that. Using migration tools before you formally start the migration, you get progress and information you can use to estimate the migration difficulty more accurately.
Jump to the Migration Scorecard
What Makes .NET5+ Migrations Difficult?
There are many potential complications for teams migrating from .NET Framework to .NET5+. But in general, these are the large challenges organizations will face during migration:
- Not every technology is available on .NET5+. Windows Communication Framework, Windows Workflow Foundation, Web Forms, etc., do not work in .NET5+. Microsoft has recommended alternatives for most of these technologies, but those are just target platforms. Components made with those technologies will require a rewrite to work on .NET5+.
- Even supported technologies will have migration complications. WPF and WinForms can be moved to the .NET5+ runtime, but that doesn’t mean those applications will instantly work. Many applications built with WPF and WinForms use third-party libraries and APIs that may not have been brought into .NET5+ themselves. The more third-party APIs you rely on, the trickier this situation gets.
- Many applications use multiple .NET Framework technologies. Your application may be composed of some technologies ported to .NET5+ and some that were not. More technologies mean more work and more alternative solutions needed to migrate your application (some of which may be new to your developers).
Migrating from .NET Framework to .NET5+ can be complicated no matter what technology you use. But that doesn’t mean you shouldn’t consider it. For many organizations, there are many reasons to migrate despite potential difficulties:
- If you want to take advantage of continued innovations, you should move to the .NET5+ branch. Microsoft has already made improvements to WPF for .NET5+ that are not available on .NET Framework.
- The performance improvements in .NET5+ are significant and should only become more significant over time. If your application is competing in a competitive market, you may get a substantial edge over competitors that do not migrate their applications.
- While many will be extremely complicated, some migrations will be easy. If your application doesn’t use many third-party APIs, only uses technologies brought into .NET5+, or is relatively small, the migration may not be that difficult. If you can migrate in one afternoon, why wouldn’t you?
The ratio between difficulty and the value added will be different for each organization. What’s more frustrating is that ‘difficulty’ is not something you can realistically measure with a scale or percentage; it’s a qualitative, somewhat subjective measure. But to judge if a migration is worthwhile for your application, you need to know the project’s general difficulty and compare that to the value provided by NET5+.
What Do I Need to Know to Estimate Migration Difficulty?
There are two categories of information you need to estimate an application’s migration difficulty: technology information and qualitative information.
Consider these five .NET Framework technologies:
- Windows Presentation Framework
- Windows Communication Framework
- ASP.NET Web Forms
- Windows Workflow Foundation
The effort needed for each technology is different. While the difficulty will vary from each unique application, these are some general guidelines that should help you start making the judgment:
- WPF and WinForms are .NET5+ technologies themselves, so the port will likely be more manageable than WCF, WF, or Web Forms. Migration difficulty for these technologies is based on your dependencies.
- Windows Communication Framework (WCF) is not on .NET5+. But there are good alternatives and useful tools to make the transition easier than other .NET Framework technologies that are not part of .NET5+.
- Web Forms as stable recommended alternatives, but it lacks the migration tools available for WCF.
- Windows Workflow Foundation (WF) projects will tend to be more difficult than other projects as there is no obvious replacement, and often these applications consist of many other .NET Framework technologies.
Additionally, your application will have dependencies that can make the port more difficult. By dependency, we mean any NuGet Library, API, plugin, or other pieces of software (log viewer, IDE, etc.) that the application requires to run or that your team needs for developing the application. For example, there will be cases where you have a WPF application that should be easy to migrate, but it’s mired in dependencies that require updates or alternatives for .NET5+.
By qualitative information, we mean any non-technical quality of the software. For migrations, two qualitative factors will matter the most:
- Your team’s familiarity with the technology. Even if WPF is an easier migration in general, it will still be difficult for a team with little WPF experience. On the other hand, a team that knows the Web Forms alternatives like Razor Pages will have an easier time rewriting a Web Forms application.
- The application size. Even if it is generally easier to migrate a WPF application than a Web Forms application, an application’s size can change that. A WPF application with dozens of third-party APIs and libraries will likely be more challenging to migrate than a one-page ASP.NET Web Forms application, even if you must rewrite the Web Forms application as Blazor from scratch.
Discuss these qualitative factors with your teams. As the on-the-ground migration force, their input is vital. Once you have a better understanding of these, it will be much easier to estimate the migration difficulty and discuss it with other stakeholders in your organization.
Tools to Help Estimate Migration Difficulty
None of the tools listed here will do the whole migration for you. But migration assistance tools can be valuable for helping organizations estimate the effort required for .NET5+ migrations. Below are the tools that we would recommend organizations use to assist with estimating migration difficulty.
WPF and WinForms Migrations
While there are challenges for porting even supported technologies from .NET Framework to .NET5+, the good news is that Microsoft has made some tools that will help organizations gauge the difficulty for those ports, Try-convert and APIport.
- Try-convert: This tool helps rewrite parts of .NET Framework projects to .NET5+. In short, it will convert the entire project to the .NET SDK. That does not mean that the application will even compile, but it will build in Visual Studio and give you a place to start at a minimum. Plus, there is always a chance that the project will compile and work as expected. For most applications, that is unlikely. But for applications that don’t use many third-party APIs or have other dependencies, Try-convert may get the job done.
- APIport: This tool reviews your project’s APIs and judges whether they will work in .NET5+ (or other .NET platforms). Instead of giving an exact yes or no answer, the tool supplies a percentage-based grade. For example, an API with a 100% grade is known to work with .NET5+, one with 80% will most likely work, etc. With the full list of results, you will know the exact dependencies you don’t need to worry about and which ones are priorities to address. Once you have a list, talk it over with your team to determine which dependencies are the most important. If important dependencies have low percentages of working, you will need to account for that in your migration schedule.
This video goes over two Microsoft employees using the tools on a basic .NET Framework WPF application. The project is small and a demo project. So with just these tools, they get the application running on .NET5+. Likely, your application will have more than just the project configuration files that need changes to run on .NET5+, but these tools will help show you precisely what needs to be changed.
WCF users should consider Visual ReCode for converting WCF portions of their .NET Framework applications into the Microsoft-recommended alternative, gRPC.
Visual ReCode is a Visual Studio plugin that will convert WCF code into the gRPC equivalent. Additionally, Visual ReCode has a Guided Project Upgrades feature that will find the best order to upgrade the project. It will determine which parts of a project are reliant on other components. With that information, it creates an optimized upgrade path for the program. Finally, Visual ReCode will automatically install any NuGet packages in your project that need updates (if there is a direct replacement), reducing the chance that dependencies will become a major problem.
Assistance for Decision Making
Discussing the difficulty of a migration can be hard to do. Difficulty is a subjective metric that can be hard for developers or non-developers to discuss concretely. That’s why we made the chart below.
Using the information you have gathered for your application, add points to your tally for every represented technology or qualitative challenge present. Add up the points for a total score.
|ASP.NET Web Forms||+ 25|
|Workflow Foundation||+ 40|
|Minor Dependencies||+ 1 per dependency|
|Major Dependencies||+ 5 per dependency|
|Medium Sized Application||+10|
|Unfamiliar Target Framework||+10|
|Your Total Score|
Depending on your total score, you will get a specific difficulty grade. This is what each grade means:
- 15 to 24 = Minimally Challenging: Migrations in this category would include small WPF or WinForms applications without many dependencies or even WCF applications in certain cases. For “Minimally Challenging” migrations, the application scope will be smaller, single framework solutions, and not use too many NuGet libraries or other APIs. In general, “Minimally Challenging” migrations should be strongly considered even if the application is just occasionally used. In most cases, the benefits of .NET5+ should be worth the simple migration.
- 25 to 54 = Moderately Challenging: These migrations include medium- to large-size WPF, WinForms, and WCF applications, any Web Forms application, and projects with a fair number of dependencies. This category can also include applications that use multiple .NET Framework technologies. The scenarios that show up in “Moderately Challenging” migrations are like those found in “Very Challenging” migrations, just at a smaller scale. Organizations facing “Moderately Challenging” migrations should take ample time to consider the importance of the application to the organization. If the application is rarely used or less important to the organization, a “Moderately Challenging” migration may not be worth the time and effort.
- 55+ = Very Challenging: If your migration involves tons of dependencies, multiple .NET Framework technologies, or is a Windows Workflow Foundation application, it should be considered a “Very Challenging” migration. The greatest source of difficulty for these migrations comes from the project’s scale.It’s not like applications become gigantic by accident; they are generally crucial to the organization. When making plans for a “Very Challenging” migration, know that it will be one of your organization’s largest projects. Consider the lifecycle of the .NET platform these applications use and whether migrating/rewriting in “Very Challenging” situations is even necessary.
This Scorecard should provide a good start for discussing project difficulty with others and offer a starting point for making plans. But remember: Your organization and your applications are unique and should be assessed as such!
Embark Confidently on Your Migration
Estimating the migration difficulty for your .NET Framework project is an integral part of deciding whether migration is worth it. The higher the difficulty of the migration the higher the priority, effort, and time the project would require for success. It’s up to your organization to decide whether prioritizing a migration to NET5+ is worth it. Using the right tools will help you make that decision confidently.
We’ve built a guide to help you successfully navigate the migration to .NET 8 and beyond. Get your copy today!