noxi雑記

.NET、Angularまわりの小ネタブログ

.NET Coreコンソールアプリにappsettings.jsonを追加する

ASP.NET Core アプリでは標準で appsettings.jsonappsettings.Production.json を読み込んで設定として使用する、またはソリューションエクスプローラー上で階層表示することができます。しかしコンソールアプリではこのような機能が存在しません。
設定として読み込む事よりも csproj 設定を忘れることが多いのでメモしておきます。

appsettings.json をビルド時に出力ディレクトリへコピーする

csproj ファイルに CopyToOutputDirectory を追加します。値は NeverAlways または PreserveNewest の3択で、それぞれコピーしない、常にコピーする、新しい場合のみコピーする、です。

<Project Sdk="Microsoft.NET.Sdk">

  <!-- 省略 -->

  <ItemGroup>
    <None Update="appsettings.json;appsettings.*.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

appsettings.json を階層表示する

csproj ファイルに DependentUpon を追加します。この設定により指定したファイルに対して階層表示がされます。

<Project Sdk="Microsoft.NET.Sdk">

  <!-- 省略 -->

  <ItemGroup>
    <None Update="appsettings.json;appsettings.*.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="appsettings.*.json">
      <DependentUpon>appsettings.json</DependentUpon>
    </None>
  </ItemGroup>

</Project>