web-dev-qa-db-ja.com

appsettings.dev.jsonが出力フォルダーに確実にコピーされるようにするにはどうすればよいですか?

各環境に1つずつ、3つの構成ファイルがあります。

  1. appsettings.json->生産
  2. appsettings.dev.json->開発
  3. appsettings.stg.json->ステージング

ASPNETCORE_ENVIRONMENTdevに設定すると、appsettings.dev.jsonが見つからないというエラーが発生します。追加してみた

"copyToOutput": [
  "appsettings.dev.json"
]

project.jsonのbuildOptionsセクションに追加しますが、効果がないようです。

Appsettings.dev.jsonを強制的に出力ディレクトリにコピーできる別の方法はありますか?

15
Alex G.

Appsettings.dev.jsonが配置される基本パスを設定しましたか?

var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
7
Ivan Zaruba

私の場合、appsettings.jsonは単体テスト用にコピーされていません。

ファイルを右クリックしてPropertiesを選択すると、このダイアログが表示されます。 Build ActionEmbedded resourceに変更すると、ファイルが単体テストが取得するbinフォルダー。

enter image description here

7
Jess

これを「project.json」に含めると、うまくいきます。

...
"publishOptions": {
  "include": [
    "wwwroot",
     ...
    "appsettings.json",
    "appsettings.Development.json",
    ...
  ]
},
...
7
Fabricio Koch

ソリューションエクスプローラーファイルを右クリック出力にコピーしたい(あなたの場合はappsettings.dev.json)を押してPropertiesを押します。[プロパティ]ウィンドウペインでCopy To Output DirectoryオプションをCopy Alwaysに設定します。そうすることで、プロジェクトをビルドするたびに、ファイルが出力ディレクトリ(ビルドプロファイルに応じてプロジェクトビンまたはリリースディレクトリ)にコピーされます。

3
Code_Worm

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が認識している変数を作成または一覧表示できる場合もあります。

2
djangojazz