2017-09-22 1 views
3

Ich habe eine Assembly erstellt in NetStandard2.0. Es liest AppSettings mit System.Configuration.ConfigurationManager. Ich habe nugget-Paket von System.Configuration.ConfigurationManager mit Version 4.4.X installiert, die für NetStandard2.0 geeignet ist.Kann System.Configuration.Configuration Manager in einer .NET Standard2.0-Bibliothek auf .NET FX4.6 nicht verwenden

Wenn ich diese Assembly in der Konsolen-App (.Net Core) verweise, liest sie AppSettings richtig, aber wenn ich diese Assembly in der alten .NetFramework (4.6.X) Konsolen-App verweise, funktioniert sie nicht und wirft eine Ausnahme.

Bitte beachten Sie den folgenden Code.

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(); 
    } 
    } 
} 

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

Es wird mit Console App arbeiten entwickelt .NetCore verwenden.

Bitte helfen Sie !!!

+0

Microsoft hat gerade ein "Windows Compatibility Pack für .NET Core" angekündigt. Das enthält unter anderem 'System.Configuration.ConfigurationManager' (dreht aber Ihre .NET Core App" Windows only "). Ich weiß nicht, ob es schon verfügbar ist. Googeln Sie einfach nach dem Begriff in Anführungszeichen und sehen Sie, was Sie herausfinden können. –

+0

Haben Sie die automatische Bindungsumleitung aktiviert, wie in https://github.com/dotnet/announcements/issues/31 beschrieben? –

+0

@MartinUllrich Ja, ich habe es heute versucht, aber die gleiche Ausnahme bekommen. – kiran

Antwort

1

Es ist nicht möglich, eine .NET Standard-Bibliothek zu erstellen, die auf das Paket System.Configuration.ConfigurationManager verweist und die Klasse ConfigurationManager verwendet. Sobald die Bibliothek einen Verweis auf ein .NET Core-spezifisches Paket hinzufügt, ist sie keine portable .NET-Standardbibliothek mehr, da sie an ein Framework-spezifisches Paket gebunden ist.

.NET Standard 2.0 enthält keine System.Configuration.ConfigurationManager API. Daher ist die einzige Möglichkeit, diese API zu verwenden, eine Version der Bibliothek gegen .NET Core System.Configuration.ConfigurationManager-Paket zu erstellen, die unter .NET Core verwendet werden kann und über eine zweite Version der Bibliothek verfügt, die gegen .NET FX System.Configuration Assembly erstellt wird und verwendet werden kann auf .NET FX.

Verwandte Themen