2016-09-15 10 views
6

私は長年使用してきた標準の.NET 4.5.2ライブラリを持っています。それはConfigurationManager.AppSettingsに依存しています。つまり、私のappまたはweb.configファイルのappSettingsセクションに特定の設定があることを確認しなければなりませんでした。これらの値を渡す方法はありません。それらをappSettingsセクションに置く必要があります。ConfigurationManager.AppSettingsを使用して.NETコアが標準.NETライブラリを使用しています

私は.NETコアで新しいプロジェクトを開始していますが、Net452をターゲットにしているので、いくつかのライブラリ(これまでのところうまく機能しています)を活用できます。

ConfigurationManager.AppSettingsが設定を正しく見つけるように設定する方法がわからないので、この最新のライブラリに問題があります。

appSettings.jsonに入れても機能しないようです。 web.configにそれらを置くことはどちらもうまくいかないようです。

これも可能ですか?

ありがとうございます!

答えて

6

はい、可能ですが、手動で行う必要があります(簡単な方法があるかどうかわかりません)。

あなたは以下のようなappsettings.jsonでいくつかの設定があるとします。Startup.csコンストラクタで

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

は値でConfigurationManager.AppSettingsを設定します。

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

とクラスライブラリの値を取得する:

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

このヒントをありがとう!もう一つ注意すべき点は、System.Configuration名前空間を引き出してConfigurationManagerクラスを見つけることができるように、System.Configuration.Abstractions(project.json内)に依存する必要があることです。しかし、それはチャンピオンのように動作します! – retsvek

関連する問題