本記事は、[C#での設定ファイル管理とパラメータのバージョンアップ]の続きとして、アプリケーションの設定ファイル(*.settings)による設定情報やパラメータの扱いについて記載します。Visual Studioを使って開発する際(必ずしも、VSでなくても可能ですが)、構成ファイルを使う方法がいくつかありますが、本記載では設定ファイル(*.settings)について記載します。
Contents
設定ファイル(*.settings)を使うための準備
設定ファイル(*.settings)の設定
プロジェクトのsettingファイルを作っておきます。settingファイルを作るには、以下の2つのいずれかの方法で可能です。いずれも、ソリューションエクスプローラで、
- プロジェクトの右クリックでプロパティ→設定をクリック
- Properties→Settings.settingsファイルをダブルクリック
設定ファイル(*.settings)による読み込みと書き込み
C#の設定ファイル(*.settings)による読み書きは、シンプルです。すでに上の図で分かるようにデータの型も指定しているので、そのままクラスに反映できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
class ParamUserInfoSettings { public int ID { get; set; } public string Name { get; set; } public bool IsUseGlasses { get; set; } public void Load() { this.ID = Properties.Settings.Default.ID; this.Name = Properties.Settings.Default.Name; this.IsUseGlasses = Properties.Settings.Default.IsUseGlasses; } /// <summary> /// app.configへ書き込み /// </summary> public void Write() { Properties.Settings.Default.ID = this.ID; Properties.Settings.Default.Name = this.Name; Properties.Settings.Default.IsUseGlasses = this.IsUseGlasses; Properties.Settings.Default.Save(); } } |
書き込むときは、最後のProperties.Settings.Default.Save();を呼び出すだけです。実際、保存される場所は、ユーザ別のAppDataになります。
C:\Users\<ユーザー名>\AppData\Local\<会社名>\<アプリケーション名>.exe_Url_<ハッシュ値>\<バージョン>\user.config
パラメータバージョンアップにおける設定ファイル管理による影響
上のファイルパスで分かるように、ファイル場所は、EXEのハッシュ値やバージョン番号を使っているので、アプリケーションのバージョンアップを行う時は、面倒なことになります。そこで、「Properties.Settings.Default.Upgrade();」をLoadする前に入れることで、前のバージョンの設定ファイルから読んでくれます。
1 2 3 4 5 6 7 8 9 10 11 |
public void Load() {https://se-naruhodo.com/wp-admin/post.php?post=205&action=edit&classic-editor# //前のバージョンの設定を読み込む Properties.Settings.Default.Upgrade(); //Upgradeした情報を設定する Properties.Settings.Default.IsUpgrade = true; this.ID = Properties.Settings.Default.ID; //GetPreviousVersion("ID").ToString());; ;// ; this.Name = Properties.Settings.Default.Name; this.IsUseGlasses = Properties.Settings.Default.IsUseGlasses; } |
ただし、これも問題がありまして、Update()を呼び出すことで、直前のバージョンからのデータを引き継ぐことであり、複数のバージョンがある場合、どのバージョンの設定ファイルから引き続くかは指定できませんので、新たなに注意する必要があります。どのバージョンからバージョンアップしたのか、そして、その設定ファイルパスを取得してバージョンアップすることで、実際のアプリケーション開発では面倒なことになったことがあります。
まとめ
C#の設定ファイル(*.settings)によるパラメータ管理は、画面で設定した型に合わせて読み書きができるので、楽な面はあります。しかし、アプリケーションバージョンアップの時は、どのバージョンからデータを引き継ぐか、選べない問題があるので、注意して使うべきです。