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>
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; }
}
- 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; }
}
- Add your
appsettings.json
with content similar to something like this:
{
"ApiSettings": {
"TwitterApiKey": "",
"TwitterApiSecret": "",
"BearerToken": ""
}
}
- Right click on the file
appsettings.json
and set the copy output toCopy always
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.
All Done!
Now you can experiment and make it even more advanced yourself!