-
Notifications
You must be signed in to change notification settings - Fork 0
MS_DotNetConfig
- 戻る(.NET開発)
- .NET config
- .NET Core 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 モデル)は
コンテナ・クラウド環境と相性がよく、
「接続文字列だけ環境変数で差し替える」といった運用が自然に書ける。
- コンソール・アプリや、Desktop アプリの config。
- ビルドによって、
*.exe.configが生成される。 -
appSettingsやconnectionStringsなどのセクションが含まれる。
移行メモ(正誤): 元ページの「connectionString」は、
正しくはconnectionStrings(複数形)である。
殆ど使われていない。
- アプリケーション設定を活用するには?[2.0のみ、C#、VB] - @IT
https://www.atmarkit.co.jp/fdotnet/dotnettips/558appsettings/appsettings.html
補足:
user.configはProperties.Settingsの
ユーザー スコープ設定の保存先で、
%LOCALAPPDATA%\<会社名>\<アプリ名>_<ハッシュ>\<バージョン>\user.config
に置かれる。
パスにバージョンが含まれるため、アプリを更新すると設定が引き継がれない
という定番の落とし穴がある(Settings.Upgrade()を呼ぶ必要がある)。
-
ASP.NET の Web サイトや Web アプリケーション
(ASP.NETの構成(Webサイト・Webアプリ))の config。 - 基本的には、
app.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に書くことはもう無い。
- ASP.NET 関連の machine.config(ASP.NET config内)
- ASP.NET 以外の machine.config
補足:
machine.configはマシン全体に効くため、
1 台に複数アプリが同居する環境では影響範囲が読めない。
.NET Core 以降にはマシン全体の設定という概念自体が無く、
アプリごとに完結する(サイド バイ サイド)。
これも移行時に楽になる点の一つである。
IIS 関連の config ファイルを纏めた。
ASP.NET 関連の config ファイルを纏めた。
.NET Coreで変更された、*.config ファイル文化について。
FaaS では、どうやって config するのか?的なトピックを纏めた。
補足(機密情報の扱い): config の話で現在最も重要なのは
**「接続文字列やシークレットをファイルに書かない」**という点である。
場面 手段 ローカル開発 ユーザー シークレット( dotnet user-secrets)。リポジトリ外に保存されるAzure Key Vault(Key Vault) + マネージド ID(Azure Managed Identity) コンテナ 環境変数 / シークレット マウント 特にマネージド ID を使うと
「Key Vault にアクセスするための資格情報」すら不要になるため、
秘密情報がどこにも書かれない構成にできる。
*.configの暗号化(DPAPI / RSA)は
.NET Framework 時代の解であり、現在は上記が推奨である。
-
Windows 自動パラメタとチューニング(
MS_WindowsAutoTuning.md) -
.NET の構成 | Microsoft Learn
https://learn.microsoft.com/dotnet/core/extensions/configuration -
ASP.NET Core の構成
https://learn.microsoft.com/aspnet/core/fundamentals/configuration/
Tags: 移行, .NET開発
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。