Не удается использовать диспетчер конфигурации System.Configuration.Configuration в библиотеке.NET Standard2.0 на.NET FX4.6

У меня есть сборка, созданная в NetStandard2.0. Он читает AppSettings с помощью System.Configuration.ConfigurationManager. Я установил пакет nuget System.Configuration.ConfigurationManager версии 4.4.X, который подходит для NetStandard2.0.

Когда я ссылаюсь на эту сборку в консольном приложении (.Net Core), она правильно считывает AppSettings, но когда я ссылаюсь на эту сборку в старом приложении.NetFramework(4.6.X), она не работает и не бросает исключение.

См. Код ниже.

Сборка 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"];
     }
  }

}

Консольное приложение: NetFx 4.6.X

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

Исключение после запуска:

'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.'

Он будет работать с консольным приложением, разработанным с использованием.NetCore.

Пожалуйста помоги!!!

Ответ 1

Как отметил @kiran в комментарии, вы можете решить эту проблему, выполнив:

Install-Package System.Configuration.ConfigurationManager

в диспетчере пакетов NuGet

Ответ 2

Невозможно создать библиотеку.NET Standard, которая ссылается на пакет System.Configuration.ConfigurationManager и использует класс ConfigurationManager. После того, как библиотека добавляет ссылку на.NET Core, пакет перестает быть переносимой библиотекой.NET Standard, поскольку он связан с конкретным пакетом.

.NET Standard 2.0 не содержит API System.Configuration.ConfigurationManager. Таким образом, единственный способ использования этого API - создать одну версию библиотеки для пакета.NET Core System.Configuration.ConfigurationManager, который можно использовать на .NET Core и иметь вторую версию библиотеки, которая создается против.NET FX System.Configuration и может использоваться на .NET FX.

Ответ 3

Возникла та же проблема, и после установки того же пакета System.Configuration.ConfigurationManager в проекте FX4.6 эта проблема была решена.