2016-12-02 14 views
0

プログラムプロジェクトの設定に格納されているさまざまな設定のC#プログラムがあります。コマンドラインプログラムであるため、これらの設定はuser.configファイル内のユーザーによって変更されます。すべてのデフォルト値を保存するように強制する方法はありません。すべてのユーザー設定の保存を強制します。

呼び出すProperties.Settings.Default.Save();は、永続的な設定ファイルのポイントを無効にするプログラム内のプロパティを更新すると機能しているようです。設定ファイルが存在し、それを作成し、すべて保存されていない場合は

私は、configファイルで

Properties.Settings.Default.SomeSetting = "Help"; 
Properties.Settings.Default.Save(); 

を実行した場合、私は私がしたい

< setting name="SomeSetting" serializeAs="String"> 
    <value>Help</value> 
< /setting> 

ようなものが表示されますがされて起こります設定。その後、ユーザーは必要に応じて変更することができます。

答えて

0

私が解決する方法は、バージョンアップを処理するために私が別のプロジェクトで持っていた既存のコードを変更することでした。

プログラムが実行されます。本当に質問に答えていない

if (PropertiesSettings.Default.UpgradeRequired) 
{ 
    Properties.Settings.Default.Upgrade(); 
    Properties.Settings.Default.UpgradeRequired = false; 
    Properties.Settings.Default.Save(); 
    reloadSettings(); 
} 

// Assign settings to themselves and save 
// This keeps settings the same as the defaults even when upgrading but ensures all settings appear in the config file 
private void reloadSettings() 
{ 
    Properties.Settings.Default.Setting1 = Properties.Settings.Default.Setting1; 
    Properties.Settings.Default.Setting2 = Properties.Settings.Default.Setting2; 
    //etc 
    Properties.Settings.Default.Save(); 
} 
0

設定は、特定のプロセス専用のユーザAppDataフォルダのどこかに保存されます。たとえば、アプリケーションがデバッガで実行されている場合、スタンドアロン実行時とは異なる設定になります。

これらのプロパティ設定を使用して、アプリケーション間で簡単に設定を共有する方法はないと思います。そのコードはかなり古いです(.NET 2.0またはそれ以前)。私はそれが簡単にカスタマイズできるように設計されていないと思うので、最近のコードではよくあることです。

私は、設定が特定のアプリケーション固有のものに適していると思っています。また、アプリケーション間でデータを共有する必要がある場合は、自分のファイルを管理する必要があります。

通常、ユーザはXMLまたはJSONベースのファイルを使用し、データがユーザまたはユーザアプリケーションのデータディレクトリのサブディレクトリの下にあることが意図されている場合は、サブディレクトリMy Documentsの下に(デフォルトで)保存されます正規のユーザーがそれらのファイルを参照してはならない場合。

+0

を。質問に少し詳しく説明します。 – MikeS159

+0

まあ、実際の答えはほぼ同じだと思います...そのコードは多くのカスタマイズを可能にする方法で設計されていないため、できないと思います。したがって、設定があなたの必要性に合わない場合は、独自のシステムを作成する必要があります。 – Phil1970

+0

「PropertyGrid」を使用して、ユーザーがアプリケーション内から設定を編集できるようにすることもできます。こうすることで、すべてのプロパティが表示され、場合によってはファイルを直接編集するよりユーザーフレンドリーになります。 – Phil1970

関連する問題