JSON Configuration in full .NET Framework Console App

asked7 years ago
last updated5 years ago
viewed22.6k times
Up Vote14Down Vote

I have a Console App targeting .NET 4.7.1. I'm trying to use .net core like configuration in my .Net Framework app. My `App.config is:

<configuration>
  <configSections>
    <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
  </configSections>
  <configBuilders>
    <builders>
    <add name="SimpleJson"
         jsonFile="config.json"
         optional="false"
         jsonMode="Sectional"
         type="Microsoft.Configuration.ConfigurationBuilders.SimpleJsonConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Json, Version=1.0.0.0, Culture=neutral" /></builders>
  </configBuilders>

And I have a file config.json which has property "Copy Always" set to True. config.json looks like:

{
  "appSettings": {
    "setting1": "value1",
    "setting2": "value2",
    "complex": {
      "setting1": "complex:value1",
      "setting2": "complex:value2"
    }
  },

  "connectionStrings": {
    "mySpecialConnectionString": "Dont_check_connection_information_into_source_control"
  }
}

Then, in my main method, I try to read a config value like:

var config = ConfigurationManager.AppSettings

However, the value of config is always null. I tried the following:

  1. Tried changing jsonFile to ~/config.json;
  2. Tried giving a very basic key-value (flat) json config while setting jsonMode to default value of flat;

But, can't get the config to work. How can I fix this issue?