Language support

Move every .NET repo to .NET 10 in one coordinated run.

.NET Core 1.0 through .NET 10, NuGet management, xUnit-to-TUnit test migration, and code-quality cleanup modeled on Roslynator. Built on a compiler-accurate model of your code, now fully C#-aware.

C# is now fully modeled, down to types and symbols.

Moderne builds a compiler-accurate model of every C# file, with NuGet and .csproj support on the same engine that ships Java migrations today.

A “Migrate to .NET 10” recipe run for ASP.NET, showing reviewable code diffs across repositories.

Semantic correctness, not regex.

Recipes operate on a compiler-accurate structural model with full symbol and type resolution. Format, comments, and conventions are preserved on every run.

Concrete .NET migration paths.

.NET 8 and .NET 9 both reach end-of-life on November 10, 2026. Every codebase on either version must migrate to .NET 10.

Version upgrade
  • .NET Core 1.0 → .NET 10 A single UpgradeToDotNet10 recipe chains through every intermediate version automatically. No staged per-version runs.
  • .NET 6 / 7 / 8 / 9 → .NET 10 The compressed jump for currently-supported codebases. EOL deadline locks in the timeline for .NET 8 and 9.
Framework
  • ASP.NET Framework → ASP.NET Core Migration off the legacy framework onto the modern .NET runtime, including project file and dependency restructuring.
Tests
  • xUnit → TUnit Attribute mapping, lifecycle conversion, assertion rewriting, and dependency updates. Ships as a single recipe chain.
Dependencies
  • NuGet and .csproj management Parse and transform .csproj project files. Upgrade NuGet packages and update project references across the repository estate.
Quality
  • Code-style cleanup File-scoped namespaces, pattern matching, nameof, expression-bodied members, and other modern C# idioms applied consistently.
  • Redundancy and simplification Unused declarations, redundant casts, unnecessary async/await wrappers, boolean-literal comparisons, and null-coalescing chains.
Performance
  • Performance cleanups StringBuilder chains, CancellationToken propagation, and accidental boxing flagged and rewritten.
Migrating hundreds of .NET repositories to .NET 10 would have cost us hundreds of engineering hours. With Moderne, we did it at a scale and speed that simply wouldn’t have been possible otherwise.
David Thoma Head of Engineering, Billtrust

.NET modernization, answered.

Moderne’s migration recipes cover the full range from .NET Core 1.0 through .NET 10, including ASP.NET Framework to Core migrations. Running a single UpgradeToDotNet10 recipe chains through every intermediate version automatically.

Microsoft’s .NET Upgrade Assistant has been officially deprecated as of late 2025. Moderne applies the same migrations deterministically across hundreds of repositories in a single coordinated run, delivering reviewable pull requests at scale — without manual supervision at each step. Where the .NET Upgrade Assistant guided one project at a time, Moderne handles your entire portfolio.

Yes. Moderne parses and transforms .csproj project files to upgrade NuGet packages and update project references across entire repository estates — extending transformation coverage beyond application code to the dependency layer.

Moderne’s migration model runs in two tiers. Tier 1 covers transformations with a clear, known target state and applies them automatically. Tier 2 surfaces changes with behavioral implications — these are flagged with inline markers and explanations so your team decides before any transformation runs. You get the automated wins immediately and a prioritized list of what needs a decision.

Yes. C# is now fully represented in the Moderne Lossless Semantic Tree, giving coding agents a semantic model of your .NET codebase to analyze and propose changes against. Recipes provide the governed execution layer that applies agent-proposed changes safely and consistently across repositories.

Moderne’s code quality recipes are modeled against established Roslynator and Meziantou diagnostics — the same standards the .NET community already uses for static analysis. Every recipe is validated against its equivalent Roslyn analyzer on real open source repositories.

Modernize .NET once. Stay current as new versions ship.