.NET Core allows us to create and run .NET apps on many platforms, but actually shipping our apps is hard, especially if those apps aren’t web apps that use one of the well-integrated publishing methods (WebDeploy, Azure, Docker, …).

I have come to appreciate appsettings.json and the environment-specifics overrides like appsettings.Development.json/appsettings.Production.json. They are easy to use, can be live edited without needing to restart the application and most importantly, you can build once and run the same output in multiple environments.

The dotnet cli’s test command can be run on any msbuild project or solution, yet it fails when run on non-test projects and prints errors like:

To help ease managing databases and connection strings for our team using shared infrastructure (and non-localhost development databases), we needed a way to easily configure database connection strings to: