J'ai un assemblage créé dans NetStandard2.0. Il lit AppSettings à l’aide de System.Configuration.ConfigurationManager . J'ai installé le paquet nuget de System.Configuration.ConfigurationManager avec la version 4.4.X qui convient à NetStandard2.0.
Lorsque je référence cette assemblée dans une application console (.Net Core), il lit correctement AppSettings, mais lorsque je fais référence à cette assemblée dans l'ancienne application de console .NetFramework (4.6.X), il ne fonctionne pas et génère une exception.
Veuillez consulter le code ci-dessous.
Assemblée 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"];
}
}
}
Application console: NetFx 4.6.X
using System;
using Bootstrapper.Lib;
namespace Bootstrapper.Console
{
class Program
{
static void Main(string[] args)
{
new Bootstrapper().LoadAppSettings();
}
}
}
Exception après exécution:
'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.'
Cela fonctionnera avec la Console App développée à l'aide de .NetCore.
S'il vous plaît aider !!!
Comme @kiran l'a mentionné dans un commentaire, vous pouvez résoudre ce problème en exécutant:
Install-Package System.Configuration.ConfigurationManager
dans NuGet Package Manager
Il n'est pas possible de créer une bibliothèque .NET Standard qui référence le package System.Configuration.ConfigurationManager
et utilise la classe ConfigurationManager
. Une fois que la bibliothèque ajoute une référence au package spécifique à .NET Core, elle cesse d'être une bibliothèque .NET Standard portable car elle est liée au package spécifique à la structure.
.NET Standard 2.0
ne contient pas System.Configuration.ConfigurationManager
API. Par conséquent, le seul moyen d’utiliser cette API est de créer une version de la bibliothèque contre le package .NET Core System.Configuration.ConfigurationManager
pouvant être utilisé avec .NET Core
et d’avoir une deuxième version de la bibliothèque construite avec .NET FX System.Configuration
Assembly et pouvant être utilisée. sur .NET FX
.
Avait le même problème et après avoir installé le même package System.Configuration.ConfigurationManager dans le projet FX4.6 résolu ce problème.