Skip to content

[ VisualStudio C# ] 設定ファイルの値は結局どこに記録される?

また、VisualStudio にハマってしまった。

今、とあるアプリを開発中なのだが、アプリの挙動がおかしいのでその原因を探っていた。

設定ファイルが原因だった。プログラム上で書き換えたはずの値が変わっていない。

入り組み過ぎた世界

ネットで「C# 設定ファイル」と検索すると、ほとんどのウェブサイトが App.config について解説している。App.config は、設定のテンプレートであって、本来、プログラムで書き換えたりするものではないということらしい。( iniファイルで十分だと思うのだが・・・)

それで、書き換えが可能だと言われる Settings.settings という部分に設定項目を作ることにした。

Settings.Settingsを開くと、こんな感じのテーブルが出てくる。

僕は、このテーブルのそれぞれの値が、リアルタイムで書き換わっていくのかと思っていたが、そうではないようだ。

このテーブルに新しい項目を追加すると、App.config に自動で項目が追加される。これは、結局、App.config を操作するためのインターフェースのような役割らしい。ややこしい!

VisualStudioの得意技

プログラムでSettings.settings にアクセスして値を取得する方法は、

int width = Properties.Settings.Default.window_width

値を変更するには、

Properties.Settings.Default.window_width = width;

とやればプログラム上では確かに変化しているようだった。

ただし、その変化は先ほどのテーブルには表れない。どこか目の届かない別の場所にこっそりと保存されているようだ。VisualStudioの得意技「ザ・ブラックボックス化」。

ネット調べていると、とある掲示板で似たような問題についてのやりとりがあった。どうやら、ユーザー単位、アプリのバージョン単位で記録された生データ ( user.config ) が存在するということを知った。

そうやく、それを見つけた。

場所は、C:¥Users¥username¥AppData¥Local¥App name

こ、こんなところにバージョン違いの設定ファイルが大量に・・・

このうちの一つ、フォルダ内の user.config を開いて見ると・・・ おおぉぉ!!!

 

この記事をシェア

Comments are closed.