Can't use System.Configuration.Configuration manager in a .NET Standard2.0 library on .NET FX4.6

kiran picture kiran · Sep 22, 2017 · Viewed 34.9k times · Source

I have an assembly created in NetStandard2.0. It reads AppSettings using System.Configuration.ConfigurationManager. I have installed nuget package of System.Configuration.ConfigurationManager with version 4.4.X which is suitable for NetStandard2.0.

When I refer this assembly in console app (.Net Core) it is reading AppSettings properly, but when I refer this assembly in old .NetFramework(4.6.X) console app it is not working and throwing an exception.

Please see the code below.

Assembly 1: NetStandard 2.0

Nuget: System.Configuration.ConfigurationManager 4.4.0

using System.Configuration;

namespace Bootstrapper.Lib
{
   public class Bootstrapper
   {
     public Bootstrapper()
     {

     }

     public void LoadAppSettings()
     {
         string serachPattern= 
         ConfigurationManager.AppSettings["AssemblySearchPattern"];
     }
  }

}

Console App: NetFx 4.6.X

using System;
using Bootstrapper.Lib;
namespace Bootstrapper.Console
{
  class Program
  {
    static void Main(string[] args)
    {
        new Bootstrapper().LoadAppSettings();
    }
  }
}

Exception After Run:

'Could not load file or assembly 'System.Configuration.ConfigurationManager, 
 Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one 
 of its dependencies. The system cannot find the file specified.'

It will work with Console App developed using .NetCore.

Please help!!!

Answer

Rilcon42 picture Rilcon42 · Jun 20, 2018

As @kiran mentioned in a comment you can solve this by running:

Install-Package System.Configuration.ConfigurationManager

in NuGet Package Manager