また、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 を開いて見ると・・・ おおぉぉ!!!
Visual C# 2019パーフェクトマスター 金城俊哉 (著)
スポンサードリンク:Amazon
Comments are closed, but trackbacks and pingbacks are open.