主な違いは、ASP.NETアプリケーションがあったとしてASP.NETコアアプリケーションは、特定の構成のために展開されていないことです。以前は、たとえば「リリース」として文字通り公開していました。デプロイメント設定を切り替えるには、再発行する必要がありました。 ASP.NET Coreアプリケーションでは、環境変数ASPNETCORE_ENVIRONMENT
または実行中に渡された環境によって環境が決定されます。結果として、可能なすべての環境設定を展開することは完全に有効です。環境は気まぐれに変更できるためです。
つまり、環境を変更するつもりがないことが分かっている場合は、不要なファイルappsettings.{environment}.json
を削除するだけです。さらに、実際には男性appsettings.json
の設定を上書きしないでください。環境固有の場合は、環境固有のJSONファイルのいずれかに移動する必要があります。あなたのメインのappsettings.json
ファイルは実際には環境の影響を受けないグローバル設定しか含んでいないはずです。このようにして処理すると、設定がどこから来ているかを見るために両方を見る必要はありません。あなたは、このアプローチが気に入らない場合は
最後に、一般的に、あなたは、単にそのような環境変数や、AzureのキーVaultなどの外部コンフィグ源として、異なる構成の戦略を選択することができます。あなたは時々あなたのプロジェクトとして、最初の場所でそれらをしたくない場合は、AddJosnFile()
を削除することを選ぶことができます
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
:私たちは通常、次のようになり、その定義済みのConfigurationBuilder
を見ることで起動することができます
これを正しく取得した場合は、環境固有の設定を外部化する必要があります。たとえば、appが5つのサーバに配備され、異なる接続文字列を使用する場合、この設定はappsettings.jsonの外にある必要があります。この方法では、すべての環境でアプリケーションのビルドが1つしかありません。 –
さて、はい、いいえ。実際の "ルール"はありません - ただの推奨事項です。あなたはとにかくこれを処理することができます。はい、通常は環境固有の設定を外部化することをお勧めしますが、.NET Coreではビルドはビルドです。私が言ったように、「リリース」ビルド、「ステージング」ビルドなどはありません。環境自体は外部化されています。 –