私はこのように私の設定ファイルから設定を読み込むメソッドを持っています:
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で利用可能であると期待するでしょう。
何が足りないの?
はい、ConfigurationManager.AppSettings
はNuGetパッケージSystem.Configuration.ConfigurationManager
を参照した後に.NET Core 2.0で利用可能です。
解決策を提供してくれたクレジットは@JeroenMostertです。
パッケージをセットアップしたら、app.configまたはweb.configを作成して次のようなものを追加する必要があります。
<configuration>
<appSettings>
<add key="key" value="value"/>
</appSettings>
</configuration>
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
最新のガイダンスは次のとおりです。( 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
を使用することをお勧めします。