1. ホーム
  2. c#

.Net Coreでapp.configを使用する

2023-09-09 04:20:31

質問

問題があります。.Net Core(C#)でapp.configを利用した以下のようなプログラムを作成する必要があります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="custom" type="ConfigurationSample.CustomConfigurationSection, ConfigurationSample"/>
  </configSections>
  <connectionStrings>
    <add name="sampleDatabase" connectionString="Data Source=localhost\SQLExpress;Initial Catalog=SampleDatabase;Integrated Security=True"/>
  </connectionStrings>
  <appSettings>
    <add key="sampleApplication" value="Configuration Sample"/>
  </appSettings>
  <custom>
    <customConfigurations>
      <add key="customSample" name="Mickey Mouse" age="83"/>
    </customConfigurations>
  </custom>
</configuration>

と書きます。

string connectionString = ConfigurationManager.ConnectionStrings["sampleDatabase"].ConnectionString;
Console.WriteLine(connectionString);

// read appSettings configuration
string appSettingValue = ConfigurationManager.AppSettings["sampleApplication"];
Console.WriteLine(appSettingValue);

で、これはインターネットからの例なので、うまくいくと思ったのですが、例外が発生しています。

System.Configuration.ConfigurationErrorsException: 'Error Initializing the configuration system.'
Inner Exception
TypeLoadException: Could not load type 'System.Configuration.InternalConfigurationHost' from assembly 'CoreCompat.System.Configuration, Version=4.2.3.0, Culture=neutral, PublicKeyToken=null' because the method 'get_bundled_machine_config' has no implementation (no RVA).

私はNuGet - Install-Package CoreCompat.System.Configuration -Version 4.2.3-r4 -Pre経由でダウンロードしましたが、まだうまくいきません。多分、誰かが私を助けることができますか?

どのように解決するのですか?

  1. あなたは Microsoft.Extensions.ConfigurationのAPI のいずれかを指定します。 ASP.NET Coreアプリだけでなく、.NET Coreアプリでも使用できます。 リンク先のサンプルでは、コンソールアプリで設定を読み込む方法が紹介されているので見てみてください。

  2. ほとんどの場合、JSONソース(読み方は .json ファイル) が最も適切な設定ソースです。

    注意: 誰かが、コンフィグファイルは appsettings.json . ファイル名や保存場所は特に決まりはありません。

    しかし、現実の世界は複雑なので、さまざまな設定プロバイダが存在します。

    • ファイル形式 (INI、JSON、XML)
    • コマンドライン引数
    • 環境変数

    といった具合です。カスタムプロバイダを使う/書くこともできます。

  3. 実は app.config の設定ファイルは XML ファイルでした。そのため、XML 設定プロバイダ ( ソースはgithubにあります。 , ナゲットリンク ). しかし、これは設定ソースとしてのみ使用されることに留意してください。あなたのアプリがどのように動作するかのロジックは、あなたによって実装されるべきものです。コンフィギュレーション・プロバイダは、アプリの「設定」を変更したり、ポリシーを設定したりはしませんが、ファイルからデータを読み取ることだけは行います。