各環境に1つずつ、3つの構成ファイルがあります。
ASPNETCORE_ENVIRONMENTをdevに設定すると、appsettings.dev.jsonが見つからないというエラーが発生します。追加してみた
"copyToOutput": [
"appsettings.dev.json"
]
project.jsonのbuildOptions
セクションに追加しますが、効果がないようです。
Appsettings.dev.jsonを強制的に出力ディレクトリにコピーできる別の方法はありますか?
Appsettings.dev.jsonが配置される基本パスを設定しましたか?
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
これを「project.json」に含めると、うまくいきます。
...
"publishOptions": {
"include": [
"wwwroot",
...
"appsettings.json",
"appsettings.Development.json",
...
]
},
...
ソリューションエクスプローラーファイルを右クリック出力にコピーしたい(あなたの場合はappsettings.dev.json
)を押してPropertiesを押します。[プロパティ]ウィンドウペインでCopy To Output DirectoryオプションをCopy Alwaysに設定します。そうすることで、プロジェクトをビルドするたびに、ファイルが出力ディレクトリ(ビルドプロファイルに応じてプロジェクトビンまたはリリースディレクトリ)にコピーされます。
Visual Studioを使用していると仮定します。
通常、過去のサービスでは、他の開発者が「ビルドイベント」をセットアップして、プロジェクトの特定のものがビルドされるようにしました。通常は、例としてVisual Studio 2015のASP.NETプロジェクトプロパティにあります。プロジェクトをどのようにビルドして出力するかをコマンドラインで記述します。例えば:
mkdir "$(ProjectDir)bin\Setup"
binの下に「Setup」というディレクトリを作成します
Del "$(ProjectDir)bin\Setup\*.* /Q"
新しく作成されたビンの既存のアイテムを削除します
copy "$(TargetDir)*.dll" "$(ProjectDir)bin\Setup"
ビルド場所から新しいセットアップ場所にDLLをコピーします
ここで、「Configuration Manager」が環境ごとに異なる出力を行うビルドプロセスを実行していて、常にそれらのそれぞれだけを必要とする場合は、レベルを上に移動する必要がある可能性があるため、「 dev」または「stg」、そしてそれらをコピーして戻します。 JSONデータに一致する環境についてVSが認識している変数を作成または一覧表示できる場合もあります。