2

クラスを使用しProperties.Settingsてアプリケーション設定を保存しています。クライアント システムにデプロイしたら、アプリケーションの再起動とシステムの再起動をまたいで設定が保存されるかどうかを知りたいです。

シナリオを考えてみましょう:

アプリケーションが展開されると、ユーザーは UI を介して携帯電話番号を次のように保存します。

電話 : 1xxxx - 45678

ここで、電話番号を次のように保存します

 Properties.Settings.Default.ClientPhone = this.PhoneText.Text;
 Properties.Settings.Default.Save();

電話番号が app.restarts と再起動にわたってアプリケーションに保存されることを理解していますか?

4

3 に答える 3

3

これは、アプリケーションとユーザーの設定に関する違いです。アプリケーション設定は読み取り専用です。ユーザー設定は、ユーザーごとに永続的に保存されます。あなたのコードはまさにユーザー設定を変更して保存するために必要なものです

注意: これらは「ユーザー設定」と呼ばれるため、マシン上のユーザーごとに個別に保存されます。デフォルトの .NET 設定メカニズムを使用して、すべてのユーザーに対して同じ変更可能な設定を作成することはできません。

車輪を再発明しないでください!.NET設定メカニズムを使用してください-あなたの例では正しくやっています:-)

于 2012-12-06T10:30:08.367 に答える
2

これで問題なく動作しますが、プログラムの新しいバージョンをインストールすると、古い設定が「失われる」ことに注意してください (設定はプログラムの特定のバージョンに固有のものであるため)。(「バージョン」とは AssemblyVersion を意味します)

幸い、Main() の先頭またはその近くで次の関数を呼び出すことで、これに対処できます。これを機能させるには、NeedSettingsUpgrade という新しいブール値の設定プロパティを追加し、デフォルトで「true」にする必要があります。

/// <summary>Upgrades the application settings, if required.</summary>

private static void upgradeProgramSettingsIfNecessary()
{                                                        
    // Application settings are stored in a subfolder named after the full #.#.#.# version
    // number of the program. This means that when a new version of the program is installed,
    // the old settings will not be available.
    //
    // Fortunately, there's a method called Upgrade() that you can call to upgrade the settings
    // from the old to the new folder.
    //
    // We control when to do this by having a boolean setting called 'NeedSettingsUpgrade' which
    // is defaulted to true. Therefore, the first time a new version of this program is run, it
    // will have its default value of true.
    //
    // This will cause the code below to call "Upgrade()" which copies the old settings to the new.
    // It then sets "NeedSettingsUpgrade" to false so the upgrade won't be done the next time.

    if (Settings.Default.NeedSettingsUpgrade)
    {
        Settings.Default.Upgrade();
        Settings.Default.NeedSettingsUpgrade = false;
    }
}
于 2012-12-06T10:34:07.880 に答える
1

A quick google should have done it for you.

Yes they will according to msdn: .NET allows you to create and access values (settings) that are persisted between application execution sessions.

http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

于 2012-12-06T10:28:42.443 に答える