As of late, I’ve found myself hitting File > New Project ALOT. It’s exciting to delve into some new packages and design paradigms, but I find myself taking on some of the same dependencies over and over again. Some of my favorite that make it in virtually every time:
- Serilog (link) – Structured logging
- Serilog sinks, including, but not limited to File, Rolling File, MongoDB, SQL Server, RabbitMQ, and the Async wrapper
- Mediatr (link) – In process messaging. Jimmy Bogard, you are a legend.
- Mediatr extensions to easily wire into Asp.Net Core.
- NSwag for Api Documentation
- Nicholas Blumhardt’s Smart Logging Middleware (which I’ve tweaked as my own Nuget package)
I may remove one or two if the specific project demands it, but it beats reworking my Startup.cs every single time.
The folder structure is what threw me off and took the most time. I tried to model it after most of the higher quality stuff I see on Github – things like IdentityServer4, and the Microsoft/AspNet repo. I’ve gotten used to the ‘src’ folder with accompanying ‘docs’ and ‘samples’. Achieving it was a pain, but I realized that creating Visual Studio Solution folders to be a close mirror to your actual structure helps to mentally organize it in your head. A picture is worth a thousand words:
The top level has your .sln.
The next level in has historically been all of my csproj folders. This time, I did a logical separation. I may add one for messaging in the future as well. Inside the logical folders (in the screenshot, CQRS) you will add your class libraries and projects. Be careful though, Visual Studio can trick you here.
Add New Project will drop your .csproj into a normal flat list, but the physical location is right where you put it. You have to use Add New Solution Folder to get a logical view in the Solution Explorer that matches your physical directory structure. Bit of a nuisance, but it’s not so bad once you understand what’s going on.
Before Solution Folder:
(at this point, it’s actually physically located in one of the directories above)
After Adding Solution Folder via Right Click Solution > Add > New Solution Folder:
Just drag and drop your csproj into the solution folder, and check in the resulting changes to your sln file.
You could even do a totally different view in the Solution Explorer if you wanted, but my aim was to mirror most of the higher end stuff I see on GitHub in the .Net space.
I’ve thrown it up on Github:
Hopefully it helps you save some time in your next project! Happy coding!