This is a mono repo containing many projects and applications. It is a sandbox with proof of concepts, examples, and some libraries that could later be grouped and become NuGet packages. The demo applications include Duende IdentityServer, a paired example BFF + Angular UI (using SpaYarp), a modular monolith, and other demo web APIs. It also contains a single docker compose project. I am still in the process of working out the .NET Aspire equivalent (for local development).
The library projects are grouped around specific concerns that I have centralized for learning, and future reference. Most of these projects reference both a configuration/options library, and a small logging library that are ultimately used for dynamic service registrations and application request pipeline middleware.
Dynamic service registrations against IServiceCollection
can't make use of any of the services (like the IOptions interfaces) that would normally be provided by the DI container since it doesn't become available until after the app has been built.
Any startup config / options are typically done manually with typed classes, manual binding calls, and a temporary logger instance.
A temporary service provider could be built, but it isn't best practice.
The startup options, and logging components are a uniform way to log before the provider has been built and dynamically register these services at application startup. This is just something I started playing around with a while ago and have stuck with in these demo projects. It adds a decent amount of complexity, so I wouldn't really consider introducing it outside this repo. It does make the addition of a new ASP.NET Core application very quick (in this solution).
For additional documentation, reference the markdown files under the docs
folder in the root of this repository.