11 |設定ファイルプロバイダ:書式設定を選択する自由
設定ファイルのプロバイダ
- Microsoft.Extensions.Configuration.Ini
- Microsoft.Extensions.Configuration.Json
- Microsoft.Extensions.Configuration.NewtonsoftJson
- Microsoft.Extensions.Configuration.Xml
- Microsoft.Extensions.Configuration.UserSecrets
これらは、異なるファイル形式を読み取るために、または別の場所からファイルを読み込むために必要とされています
ファイルプロバイダーのサポート
- もしファイルオプション
- ファイルの変更を監視します
これらの性質を理解するためのコードを、以下のことにより、
ソースリンク:
https://github.com/witskeeper/geektime/tree/master/samples/ConfigurationFileDemo
次の4つのパッケージを参照しています。
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.Abstractions
- Microsoft.Extensions.Configuration.Ini
- Microsoft.Extensions.Configuration.Json
読むappsettings.json
{
"Key1": "Value1",
"Key2": "Value2"
}
メインプログラム
var builder = new ConfigurationBuilder();
builder.AddJsonFile("appsettings.json");
var configurationRoot = builder.Build();
Console.WriteLine($"Key1:{configurationRoot["Key1"]}");
Console.WriteLine($"Key2:{configurationRoot["Key2"]}");
Console.WriteLine($"Key3:{configurationRoot["Key3"]}");
Console.ReadKey();
次のようにプログラムを起動し、出力は次のようになります。
Key1:Value1
Key2:Value2
Key3:
彼の値が空であるので、キー3は、存在しません。
ファイルには、そのオプションの二番目のパラメータオプションの場合、デフォルトはfalseです
builder.AddJsonFile("appsettings.json", optional:false);
ファイルが存在しないとき、それは文句を言われることを、この手段
それはreloadOnChangeで、デフォルトはtrueで別の引数です
builder.AddJsonFile("appsettings.json", optional:false, reloadOnChange:true);
ファイルが変更されるたびに、それは新しいファイルを読むために行くことを、この手段
その後appsettings.iniを見て
Key3=Value3 in ini
メインプログラム
var builder = new ConfigurationBuilder();
builder.AddJsonFile("appsettings.json", optional:false, reloadOnChange:true);
builder.AddIniFile("appsettings.ini");
var configurationRoot = builder.Build();
Console.WriteLine($"Key1:{configurationRoot["Key1"]}");
Console.WriteLine($"Key2:{configurationRoot["Key2"]}");
Console.WriteLine($"Key3:{configurationRoot["Key3"]}");
Console.ReadKey();
次のようにプログラムを起動し、出力は次のようになります。
Key1:Value1
Key2:Value2
Key3:Value3 in ini
ここでは、新しい設定を有効にするために追加されている見ることができます
ソースは、順序関係ビルダー追加するように構成され、構成が第一アド配置をカバーするために追加されます
この作品は、ある非営利- -同一条件許諾4.0の国際ライセンス契約クリエイティブ・コモンズのライセンスのために。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 ([email protected]) 。