サイトアイコン 知的好奇心

C#でPropertiesのユーザースコープ設定ファイル保存場所を確認する方法

C#でPropertiesのユーザースコープ設定ファイル保存場所を確認する方法をご紹介します。

条件

Properties設定

C#には、アプリケーションの設定を保存する機能が存在します。
詳細は、以下の記事をご確認ください。

C#でWindowsアプリケーションの設定を保存する方法

ユーザースコープのプロパティ設定ファイル保存場所確認

ユーザースコープのプロパティ設定

まずは、ユーザースコープのプロパティ設定を行います。

適当なプロジェクトを作成し、ソリューションエクスプローラーのPropertiesを右クリック > 開くを選択します。

プロジェクトの設定が開くので、左メニューで「設定」を選択します。
設定の表に、「名前」「種類」「スコープ」「値」を選択/入力します。
この際、スコープは「ユーザー」を選択します。

今回は以下のように3つ設定しました。

プロパティ保存場所確認

プロジェクトソースの任意の箇所に、以下のように記述します。

var appSettings = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.PerUserRoamingAndLocal);
Console.WriteLine("設定ファイルの保存パス:" + appSettings.FilePath); // 設定ファイルの保存パス

今回は、コンストラクタに記述しました。
しかし、エラーになっています。

参照の追加

エラーを解決するため、参照の追加を行います。

ソリューションエクスプローラーで参照を右クリックし、参照の追加を選択します。

参照マネージャー画面が開くので、アセンブリ > フレームワークを選択し、「System.Configuration」にチェックを入れてOKボタンを押します。

この設定により、ソースからエラー表示が消えます。

実行

プログラムを開始してコンソールの出力を確認します。

エクスプローラーで出力されたパスを開いて確認します。
パスが見つからないというエラーになりました。

未だ何もプロパティ設定保存を行っていないため、対象パスのフォルダそのものが作成されていないようです。

そこで、以下を追記してプロパティ設定の更新&保存を行います。

Properties.Settings.Default.setting1 = "設定1を更新!";
Properties.Settings.Default.setting2 = "設定2を更新!";
Properties.Settings.Default.setting3 = "設定3を更新!";

// アプリケーション設定値を保存する。
Properties.Settings.Default.Save();

改めてプログラムを開始して、エクスプローラーで対象パスを開きます。
今度は、設定ファイルが作成されているようです。

「user.config」を開くと以下のようになっています。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <userSettings>
        <sample1.Properties.Settings>
            <setting name="setting1" serializeAs="String">
                <value>設定1を更新!</value>
            </setting>
            <setting name="setting2" serializeAs="String">
                <value>設定2を更新!</value>
            </setting>
            <setting name="setting3" serializeAs="String">
                <value>設定3を更新!</value>
            </setting>
        </sample1.Properties.Settings>
    </userSettings>
</configuration>

想定通り、プロパティ設定が保存されていることがわかります。

ソース全体

参考までに、今回のソース全体は以下の通りです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sample1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            var appSettings = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.PerUserRoamingAndLocal);
            Console.WriteLine("設定ファイルの保存パス:" + appSettings.FilePath); // 設定ファイルの保存パス

            Properties.Settings.Default.setting1 = "設定1を更新!";
            Properties.Settings.Default.setting2 = "設定2を更新!";
            Properties.Settings.Default.setting3 = "設定3を更新!";

            // アプリケーション設定値を保存する。
            Properties.Settings.Default.Save();
        }
    }
}

参考

dobon.net:Visual Studioでアプリケーションの設定を保存する

https://dobon.net/vb/dotnet/programing/mysettings.html

OUTPUT48:【C#】ConfigurationManagerが出ない

https://www.out48.com/archives/2108/

モバイルバージョンを終了