ドキュメントには、カスタム環境変数を渡すための2.0のサポートはありませんが、EFコア1.0では--environment引数がサポートされています。この機能はEF Core 2.0でもサポートされているはずです。
現在、私は同じマシンに複数のアプリケーションを配備していますが、同じマシン上の異なるバージョンを配備しています。私はPuppetを使用していくつかの展開プロセスを自動化し、 Company.Project.[env]
ようなIISのWebサイトで終わります。ここで、 env
はそれぞれ.dev、.test、.uatのようなもので、それぞれAppPoolなどで実行されます。ASP.NET Core 2.0では、配備されたaspnetコアのWebサイトとその環境ごとに< environmentVariable
>をweb.configに適用できますweb.config
変数は、 ASPNETCORE_ENVIRONMENT
任意のマシン環境変数より優先されます。人形の配備中、ASPNETCORE_ENVIRONMENT変数のweb.configに正しい値が挿入されますが、これは私にとって理にかなうもので、配備された各アプリケーションは正しくブートストラップされ、適切なappsettings.[environment].json
ファイルにappsettings.[environment].json
ます。
今、EF Core 2.0では、私はこれを行うことができません。私は、環境ごとに別々のデータベースプロジェクトを展開し、展開された各パッケージに環境名をつけることを計画していました。ウェブサイトでのやり方と同じように、dotnet dotnet ef
コマンドを実行して彼らは適切なappsettings.[environment].json
ファイルを読み込み、移行を実行するための適切なデータベース環境接続文字列を持っています。
ASPNETコアのウェブサイトは、<サポートしている場合environmentVariable
に>をweb.config
のユニークな環境変数を消費同じマシンに展開する複数のプロジェクトが可能になります。それでは、EF Coreが環境を通過するのをサポートするような気がします。
これはもはやサポートされていないので、同じマシンに複数回アプリケーションをデプロイする最も良い方法は何でしょうか?特定のappsettingsを対象とするdotnet dotnet ef
コマンドを実行してください。[environment] .json efコマンドが特定の接続文字列配備されたプロジェクトで実行し、そのマシン上の正しいデータベースで移行を実行します。
EF Coreは、カスタム引数をefツールコマンドに渡す方法をサポートします。この機能をトラッキングしていることがわかりました。
https://github.com/aspnet/EntityFrameworkCore/issues/8332
これが完了すると、efコマンドとともに接続文字列またはその他の環境引数を渡すことができます。
@Konradからのアドバイスに従って:
プロジェクトパスタイプで実行中のターミナル
ASPNETCORE_ENVIRONMENT = Production <-または環境をエクスポートします
その後、実行するコマンドは環境のappsettings.json(appsettings.Production.json)を使用します
現在、asp net core 2.2を使用しています