2016-09-15 6 views
6

Ich habe eine Standard-.NET 4.5.2-Bibliothek, die ich seit Jahren verwende. Es hängt von ConfigurationManager.AppSettings ab, was bedeutet, dass ich im AppSettings-Bereich meiner App oder web.config-Dateien sicherstellen musste, dass bestimmte Einstellungen vorgenommen wurden. Es gibt keine Möglichkeit, diese Werte zu übergeben. Sie müssen sie in den appSettings-Abschnitt setzen..NET Core Standard-.NET-Bibliothek mit ConfigurationManager.AppSettings verwenden

Ich beginne ein neues Projekt in .NET Core aber Targeting Net452, so dass ich eine Reihe von Bibliotheken (die bisher funktioniert) nutzen kann.

Ich habe ein Problem mit dieser neuesten Bibliothek, weil ich nicht herausfinden kann, wie die Einstellungen richtig eingerichtet werden, so dass ConfigurationManager.AppSettings sie finden wird.

Putting sie in appSettings.json scheint nicht zu funktionieren. Putting sie in einer web.config scheint auch nicht zu arbeiten.

Ist das überhaupt möglich?

Danke!

Antwort

6

Ja ist es möglich, was Sie wollen, aber Sie sollten manuell tun (Ich weiß nicht, ob es einen einfachen Weg gibt).

Angenommen, Sie in appsettings.json wie unten einige Einstellungen haben:

{ 
    "AppSettings" : { 
     "Setting1": "Setting1 Value" 
    } 
} 

Im Startup.cs Konstruktor gesetzt ConfigurationManager.AppSettings mit Wert:

public Startup(IHostingEnvironment env) 
    { 
     var builder = new ConfigurationBuilder() 
      .SetBasePath(env.ContentRootPath) 
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
      .AddEnvironmentVariables(); 
     Configuration = builder.Build(); 

     // copy appsetting data into ConfigurationManager.AppSettings 
     var appSettings = Configuration.GetSection("AppSettings").GetChildren(); 
     foreach (var setting in appSettings.AsEnumerable()) 
     { 
      ConfigurationManager.AppSettings[setting.Key] = setting.Value; 
     } 
    } 

und Wert in der Klassenbibliothek erhalten:

var conStr = ConfigurationManager.AppSettings["Setting1"].ToString(); 
+2

Danke für diesen Tipp! Eine zusätzliche Sache, die Sie beachten sollten, ist, dass Sie eine Abhängigkeit von System.Configuration.Abstractions (in der project.json) benötigen, damit Sie den System.Configuration-Namespace abrufen können, um die ConfigurationManager-Klasse zu finden. Aber es funktioniert wie ein Champion! – retsvek