C#の設定ファイル(*.settings)による読み書きとバージョンアップ

本記事は、[C#での設定ファイル管理とパラメータのバージョンアップ]の続きとして、アプリケーションの設定ファイル(*.settings)による設定情報やパラメータの扱いについて記載します。Visual Studioを使って開発する際(必ずしも、VSでなくても可能ですが)、構成ファイルを使う方法がいくつかありますが、本記載では設定ファイル(*.settings)について記載します。

設定ファイル(*.settings)を使うための準備

設定ファイル(*.settings)の設定

プロジェクトのsettingファイルを作っておきます。settingファイルを作るには、以下の2つのいずれかの方法で可能です。いずれも、ソリューションエクスプローラで、

  1. プロジェクトの右クリックでプロパティ→設定をクリック
  2. Properties→Settings.settingsファイルをダブルクリック

設定ファイル(*.settings)による読み込みと書き込み

C#の設定ファイル(*.settings)による読み書きは、シンプルです。すでに上の図で分かるようにデータの型も指定しているので、そのままクラスに反映できます。

書き込むときは、最後のProperties.Settings.Default.Save();を呼び出すだけです。実際、保存される場所は、ユーザ別のAppDataになります。

C:\Users\<ユーザー名>\AppData\Local\<会社名>\<アプリケーション名>.exe_Url_<ハッシュ値>\<バージョン>\user.config

パラメータバージョンアップにおける設定ファイル管理による影響

上のファイルパスで分かるように、ファイル場所は、EXEのハッシュ値やバージョン番号を使っているので、アプリケーションのバージョンアップを行う時は、面倒なことになります。そこで、「Properties.Settings.Default.Upgrade();」をLoadする前に入れることで、前のバージョンの設定ファイルから読んでくれます。

ただし、これも問題がありまして、Update()を呼び出すことで、直前のバージョンからのデータを引き継ぐことであり、複数のバージョンがある場合、どのバージョンの設定ファイルから引き続くかは指定できませんので、新たなに注意する必要があります。どのバージョンからバージョンアップしたのか、そして、その設定ファイルパスを取得してバージョンアップすることで、実際のアプリケーション開発では面倒なことになったことがあります。

まとめ

C#の設定ファイル(*.settings)によるパラメータ管理は、画面で設定した型に合わせて読み書きができるので、楽な面はあります。しかし、アプリケーションバージョンアップの時は、どのバージョンからデータを引き継ぐか、選べない問題があるので、注意して使うべきです。