web-dev-qa-db-ja.com

ConfigurationManager.AppSettingsは.NET Core 2.0で利用できますか?

私はこのように私の設定ファイルから設定を読み込むメソッドを持っています:

var value = ConfigurationManager.AppSettings[key];

.NET Standard 2.0のみを対象としている場合は、うまくコンパイルされます。

複数のターゲットが必要になったので、プロジェクトファイルを次のように更新しました。

<TargetFrameworks>netcoreapp2.0;net461;netstandard2.0</TargetFrameworks>

しかし今、netcoreapp2.0のコンパイルは失敗し、次のエラーメッセージが表示されます。

Error   CS0103  The name 'ConfigurationManager' does not exist in the current context   (netcoreapp2.0)

別に、私は新しい.NET Core 2.0コンソールアプリケーションを作成しました(今回は.NET Core 2.0のみをターゲットにしています)が、同様に名前空間System.Configurationの下にConfigurationManagerはないようです。

私はそれが.NET Standard 2.0の下で利用可能であるので、私はかなり混乱します、それで私はそれが.NET Core 2.0で利用可能であると期待するでしょう。

何が足りないの?

71
Alex Sanséau

はい、ConfigurationManager.AppSettingsはNuGetパッケージSystem.Configuration.ConfigurationManagerを参照した後に.NET Core 2.0で利用可能です。

解決策を提供してくれたクレジットは@JeroenMostertです。

157
Alex Sanséau

パッケージをセットアップしたら、app.configまたはweb.configを作成して次のようなものを追加する必要があります。

<configuration>
  <appSettings>
    <add key="key" value="value"/>
  </appSettings>
</configuration>
5
Sharpiro

NugetのSystem.Configuration.ConfigurationManagerを私の.net core 2.2アプリケーションにインストールしました。

私はそれからusing System.Configuration;を参照します

次に、私は変わりました

WebConfigurationManager.AppSettings

to ..

ConfigurationManager.AppSettings

これまでのところ、これは正しいと思います。 4.5.0 is typical with .net core 2.2

4
Tom Stickel

最新のガイダンスは次のとおりです。( https://docs.Microsoft.com/ja-jp/Azure/azure-functions/functions-dotnet-class-library#environment-variables から)

つかいます:

System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);

ドキュメントから:

public static class EnvironmentVariablesExample
{
    [FunctionName("GetEnvironmentVariables")]
    public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
    {
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
        log.LogInformation(GetEnvironmentVariable("AzureWebJobsStorage"));
        log.LogInformation(GetEnvironmentVariable("WEBSITE_SITE_NAME"));
    }

    public static string GetEnvironmentVariable(string name)
    {
        return name + ": " +
            System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
    }
}

アプリケーションの設定は、ローカルで開発するときとAzureで実行するときの両方で環境変数から読み取ることができます。ローカルで開発する場合、アプリ設定は local.settings.json ファイルのValuesコレクションから取得されます。ローカル環境とAzure環境の両方で、GetEnvironmentVariable("<app setting name>")は名前付きアプリ設定の値を取得します。たとえば、ローカルで実行している場合、local.settings.jsonファイルに{ "Values": { "WEBSITE_SITE_NAME": "My Site Name" } }が含まれていると、「個人用サイト名」が返されます。

System.Configuration.ConfigurationManager.AppSettings プロパティはアプリ設定値を取得するための代替APIですが、ここに示すようにGetEnvironmentVariableを使用することをお勧めします。

1
Nate Radebaugh