Ответ 1
Как отметил @kiran в комментарии, вы можете решить эту проблему, выполнив:
Install-Package System.Configuration.ConfigurationManager
в диспетчере пакетов NuGet
У меня есть сборка, созданная в 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.
Пожалуйста помоги!!!
Как отметил @kiran в комментарии, вы можете решить эту проблему, выполнив:
Install-Package System.Configuration.ConfigurationManager
в диспетчере пакетов NuGet
Невозможно создать библиотеку.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
.
Возникла та же проблема, и после установки того же пакета System.Configuration.ConfigurationManager в проекте FX4.6 эта проблема была решена.