
A plugin-like mechanism is already built into ASP.NET Core and is called Parts or Application Parts .
In principle, it is a discovery mechanism to be able to use Razor or MVC components such as controllers from other assemblies, for example. Therefore, Application Parts are also particularly well suited for Domain Driven Design (DDD) separation of application components in ASP.NET Core. A DDD abstraction is the most used way of these Application Parts in my applications and architectures.
The DDD Logic Assembly
As in an otherwise clean separation of responsibilities, we keep the logic in an extra project that becomes an extra assembly.
This assembly has no information that ASP.NET Core is the runtime!
The ASP.NET Core Part Assembly
The Part Assembly is an extra project that gets a reference to ASP.NET Core.
1<Project Sdk="Microsoft.NET.Sdk">
2
3
4 <ItemGroup>
5 <FrameworkReference Include="Microsoft.AspNetCore.App" />
6 </ItemGroup>
In this project (e.g. MyCompany.MySuite.MyFeature) we can now create our controllers.
1// MyCompany.MySuite.MyFeature.AspNetCore
2
3public class PartPingController : Controller
4{
5 [HttpGet]
6 [Route("mypart/ping"]
7 public IActionResult Ping()
8 {
9 return Ok(DateTimeOffset.UtcNow);
10 }
The Registration
The registration of the application part must now be done within the configuration of the application, namely within the MVC configuration.
Thereby the MvcBuilder is created. The assemblies in which it is to search for parts, must now be made known to it.
1// MyCompany.MySuite.MyWebApp
2public void ConfigureServices(IServiceCollection services)
3{
4 // register mvc controller
5 IMvcBuilder mvcBuilder = services.AddControllers()
6
7 // register application parts
8 mvcBuilder.AddApplicationPart(typeof(PartPingController).Assembly);
9}
Done. That’s how easy it is to use Application Parts in ASP.NET Core to keep the hosting project itself lean and use Parts for plugins and routing separation.
Related articles

Mar 25, 2026 · 14 min read
The new Microsoft Testing Platform for .NET: An introduction with practical samples and migration guidance
Testing in .NET has historically been associated with VSTest. That choice was reasonable for a long time because VSTest offered broad …

Mar 17, 2026 · 15 min read
GitHub Copilot - Custom Agents for Full-Stack Teams: A Practical Operating Model for .NET, React and Azure
GitHub Copilot custom agents allow teams to define specialized AI assistants, each with its own role, tool access and behavioral boundaries. …

Mar 10, 2026 · 15 min read
.NET NuGet Trusted Publishing with GitHub Actions
Publishing NuGet packages has traditionally required one uncomfortable compromise: a long-lived API key had to exist somewhere in the …
Let's Work Together
Looking for an experienced Platform Architect or Engineer for your next project? Whether it's cloud migration, platform modernization or building new solutions from scratch - I'm here to help you succeed.

Comments