
January 12, 2026 09:37 by
Peter
In ASP.NET Core, metapackages are NuGet packages that combine several related libraries and dependencies into one package, facilitating quicker and easier application setup. Developers may refer to a single metapackage, which would automatically include everything required to execute a whole online application, rather than dozens of separate ASP.NET Core and Entity Framework Core packages.

Upon the release of ASP.NET Core 2.0, the main illustration of a metapackage was:
Microsoft.AspNetCore.All
This metapackage bundles:
- All ASP.NET Core libraries (MVC, Razor, Identity, Routing, Logging, CORS, Authentication, SignalR, etc.)
- All Entity Framework Core packages
- Required third-party dependencies used internally by the framework
This approach significantly simplified project configuration and reduced deployment complexity. In addition, because much of the metapackage's contents were stored in the ASP.NET Core Runtime Store, applications benefited from smaller publish output sizes and faster startup times, since shared assets were pre-compiled.
How Things Changed in Modern .NET (.NET Core 3.0 → .NET 10)?
Beginning with ASP.NET Core 3.0 — continuing through .NET 6, .NET 8, .NET 9, and .NET
10 — Microsoft moved away from explicit metapackages in project files.
Instead of installing a package such as Microsoft.AspNetCore.All, modern ASP.NET Core apps now rely on:
- Shared Frameworks
- Implicit Framework References
- SDK-based dependency bundling
This means that when you create a project like:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
</Project>
You automatically get all ASP.NET Core libraries — MVC, Razor Pages, Minimal APIs, Identity, EF Core — without manually referencing any metapackage. The SDK and runtime ensure consistent versions, improved performance, smaller output, and simplified .csproj configuration
Why Microsoft Made This Change?
Microsoft retired explicit metapackages because modern .NET offers:
| Benefit | Explanation |
| Cleaner project files |
No more long lists of NuGet references |
| Better version compatibility |
Framework assemblies all match the runtime version |
| Smaller deployment |
Shared framework assemblies are not copied to publish output |
| Cloud-friendly deployment |
Lighter, faster Docker images and containers |
Summary
Metapackages played an important role in ASP.NET Core’s early ecosystem by simplifying package management, but in .NET 10, their job is now handled automatically by the .NET Shared Framework and SDK tooling. Developers get a modern, lightweight, faster development model without needing to manage NuGet dependencies manually.