Guide
How to upgrade ASP.NET Zero without losing customizations
Quick answer. Treat the upgrade as a three-way merge between the old template, the new template and your code. Apply template changes only where you never edited, review every overlap by hand, validate with a real build and tests, and keep a rollback plan.
Why ASP.NET Zero upgrades are hard
- You start from a generated template and then customize it, so your code and the vendor’s template diverge.
- Each new template version changes the same files you edited, so plain text diffs bury meaningful conflicts in noise.
- The longer you wait, the more versions pile up and the larger the single jump becomes.
The three-way merge model
- Base: the template version you started from. Theirs: the target template. Yours: your current code.
- A change that exists only in Theirs can be applied safely. A change that exists in both is a conflict.
- Comparing C# syntax trees rather than lines lets the merge reason about members, not whitespace.
A safe process
- Create a branch from a green baseline and tag it.
- Update packages and verify with a real restore and build.
- Merge template changes; resolve each conflict deliberately and write down why.
- Review EF Core migrations before they touch any database.
- Run the full test suite and a vulnerability scan, then open a pull request.
Where UpgradePilot fits
- UpgradePilot automates the steps above — template download, AST comparison, semantic merge, package upgrades, migration checks, validation and the pull request.
- It leaves the judgment calls to you: every conflict is flagged rather than silently resolved.
- See the ASP.NET Zero guide for what runs and what you still review.
Next steps
See the technology guides, the documentation hub, or request a free upgrade assessment.