Skip to content

MS_DotNetConfig

nishi_74322014 edited this page Aug 21, 2026 · 4 revisions

.NET config

概要

.NET の config = *.config だが、
.NET Coreから = *.json に変更されている。

補足(何が変わったのか): 単にファイル形式が変わっただけではなく、
構成の考え方そのものが変わっている

.NET Framework .NET Core 以降
ファイル app.config / web.config(XML) appsettings.json
取得 ConfigurationManager.AppSettings["key"](静的) DI で IConfiguration / IOptions<T> を注入
ソース ファイルのみ JSON / 環境変数 / コマンドライン / Key Vault / シークレットを重ねられる
環境切替 web.Release.config の変換(XDT) appsettings.{Environment}.json自動で上書き
型付け 文字列。自分でキャスト Bind()POCO にマップ

特に「複数のソースを優先順位付きで重ねる」
Configuration Provider モデル)は
コンテナ・クラウド環境と相性がよく、
「接続文字列だけ環境変数で差し替える」といった運用が自然に書ける。

詳細

各種 configファイル

app.config

  • コンソール・アプリや、Desktop アプリの config。
  • ビルドによって、*.exe.config が生成される。
  • appSettingsconnectionStrings などのセクションが含まれる。

移行メモ(正誤): 元ページの「connectionString」は、
正しくは connectionStrings(複数形)である。

user.config

殆ど使われていない。

補足: user.configProperties.Settings
ユーザー スコープ設定の保存先で、
%LOCALAPPDATA%\<会社名>\<アプリ名>_<ハッシュ>\<バージョン>\user.config
に置かれる。
パスにバージョンが含まれるため、アプリを更新すると設定が引き継がれない
という定番の落とし穴がある(Settings.Upgrade() を呼ぶ必要がある)。

web.config

補足(ASP.NET Core でも web.config は残る): ASP.NET Core
appsettings.json を使うが、IIS にデプロイする場合は
web.config も必要
である。
ただし役割が変わっており、中身は
ASP.NET Core Module (ANCM) の設定だけになる。

<aspNetCore processPath="dotnet" arguments=".\MyApp.dll"
            hostingModel="inprocess" />

アプリケーション設定を web.config に書くことはもう無い。

machine.config

  • ASP.NET 関連の machine.config(ASP.NET config内)
  • ASP.NET 以外の machine.config

補足: machine.config はマシン全体に効くため、
1 台に複数アプリが同居する環境では影響範囲が読めない
.NET Core 以降にはマシン全体の設定という概念自体が無く、
アプリごとに完結する(サイド バイ サイド)。
これも移行時に楽になる点の一つである。

その他 config関連

IIS 関連の config ファイルを纏めた。

ASP.NET 関連の config ファイルを纏めた。

.NET Coreで変更された、*.config ファイル文化について。

FaaS では、どうやって config するのか?的なトピックを纏めた。

補足(機密情報の扱い): config の話で現在最も重要なのは
**「接続文字列やシークレットをファイルに書かない」**という点である。

場面 手段
ローカル開発 ユーザー シークレットdotnet user-secrets)。リポジトリ外に保存される
Azure Key VaultKey Vault) + マネージド IDAzure Managed Identity
コンテナ 環境変数 / シークレット マウント

特にマネージド ID を使うと
「Key Vault にアクセスするための資格情報」すら不要になるため、
秘密情報がどこにも書かれない構成にできる。
*.config の暗号化(DPAPI / RSA)は
.NET Framework 時代の解であり、現在は上記が推奨である。

参考


Tags: 移行, .NET開発

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally