How to C#: add a settings file to your Console application

Roel - Apr 18 '22 - - Dev Community

What if I want to create a quick console application and keep all my settings in a seperate appsettings.json file? The default C# application template doesn't provide this for us, so I think it might be useful to write a little guide to make this easier in the future.

Required

  • .Net 5.0 console application
  • The following packages:
<ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.0" />
</ItemGroup>
Enter fullscreen mode Exit fullscreen mode

Guide

Simply follow these steps to load your appsettings into a class for easy use.

  • Add the references above to the project
  • Add a new class called ApiSettings.cs
    public class ApiSettings
    {
        public string TwitterApiKey { get; set; }
        public string TwitterApiSecret { get; set; }
        public string BearerToken { get; set; }
    }
Enter fullscreen mode Exit fullscreen mode
  • Add a new class called Startup.cs
public class Startup
    {
        public Startup()
        {
            var builder = new ConfigurationBuilder()
                      .SetBasePath(Directory.GetCurrentDirectory())
                      .AddJsonFile("appsettings.json", optional: false);

            IConfiguration config = builder.Build();

            ApiSettings = config.GetSection("ApiSettings").Get<ApiSettings>();

        }

        public ApiSettings ApiSettings { get; private set; }
    }
Enter fullscreen mode Exit fullscreen mode
  • Add your appsettings.json with content similar to something like this:
  {
"ApiSettings": {
    "TwitterApiKey": "",
    "TwitterApiSecret": "",
    "BearerToken": ""
  }
}
Enter fullscreen mode Exit fullscreen mode
  • Right click on the file appsettings.json and set the copy output to Copy always

Image description

  • Make sure the fields in the section 'ApiSettings' match your ApiSettings.cs class.

  • Go back to your Program.cs file and add the following line:
    var startup = new Startup();

  • We can now use the values in the ApiSettings section of our appsettings. You can try it out with the following code.

Image description

All Done!

Now you can experiment and make it even more advanced yourself!

. . . . . . . . . . . . . . . .