アプリケーションの状態を保存(補足)

http://d.hatena.ne.jp/akiramei/20071125/1195977405
↑のフォロー。
保存先にバージョン情報を持っているので、アセンブリのバージョン番号が変わると設定値が無効になってしまいます。その場合、旧バージョンから値を移行させる必要があります。
例えば、こんな感じ。

    public class MySettings : ApplicationSettingsBase
    {
        const string KEY = "LastExecuted";

        // ユーザ毎に保存する
        [UserScopedSetting]
        public DateTime LastExecuted
        {
            get
            {
                // if (this.SettingsKey.Contains(KEY)) {...}
                // ↑このように書くのはダメ。
                // 最初のアクセス時に設定を読み込むようなので、
                // アクセスするまでキーが存在しない

                object o = this[KEY];
                if (o == null)
                {
                    // 古いバージョンの値取得を試みる
                    o = GetPreviousVersion(KEY);
                    if (o == null)
                        return DateTime.MinValue;
                    else
                        Console.WriteLine("古バージョンから値を引き継ぎました。");
                }
                return (DateTime)o;
            }
            set
            {
                this[KEY] = value;
            }
        }
    }

プロパティを一つ一つ設定するのが面倒な場合は、設定値にバージョン番号などキーになる値を持たせて、それが変更されたらsettings.Upgrade()を呼び出すとか。