1

アプリケーション設定を読み書きする .NET 4.0 でソフトウェアを開発しています。終了すると、ソフトウェアはファイル サーバーに保存されます。ローカル インスタンスは実行されません。

デフォルトでは、ユーザー設定 XML ファイルはすべてのユーザーAppData\...ディレクトリに保存されますが、ファイルの場所を実行可能ファイルが保存されているディレクトリに変更したいと考えています。

これは、すべてのユーザーが内容を変更した同じ XML ユーザー設定ファイルを使用する必要があることを意味します。

ユーザーがJSON形式でそれを実現する方法を説明しているこの質問と回答を読みました。

質問:Settingsクラスに、どこから読み込んでユーザー設定に書き込むか を伝える他の (簡単な) 方法はありませんか?

次のことが議論されました。

  • ユーザーは常に、設定ファイルを変更するための十分なアクセス権を持っています。
  • 設定の変更は、他のユーザーが取得する必要があります。
  • ユーザーは、異なるネットワーク コンピューターからアプリケーションを起動します。
  • アプリケーションによって処理される独自の XML ファイルを実装することもできます (これは心に留めておきます)。
4

2 に答える 2

2

標準の Settings クラスで必要な機能を取得できるかどうかはわかりません。しかし、あなたが探している最終結果は達成できると思います。

ユーザー 1 が行った設定の変更をユーザー 2 に即座に適用する場合は、設定をデータベースに保存することを検討する必要があります。アプリケーションは、このテーブルの変更を定期的に確認できます。たとえば、ユーザー 1 がコントロールの色を変更した場合、ユーザー 2 がそのコントロールを含む画面をロードするたびに、データベースで色をチェックします。

または、アプリケーションの起動時に設定を適用する場合。datacontract + xml シリアライザーを使用して、ネットワーク アクセス可能なパス/フォルダー上の選択したファイルに設定を書き込みます。次に、このファイルの読み取り/書き込みロックを処理できることを確認してください。

これらは、考慮すべき一般的なアイデアにすぎません。ただし、これらが唯一の選択肢であるとは主張しません。これらのいずれかを追求したい場合は、必要なすべての情報が記載されたブログやスタックオーバーフロー ページが多数あります。

幸運を!

于 2013-09-27T16:41:10.607 に答える
2

プロジェクトにカスタムApplication Configuration File呼び出しを追加し、AppSettings.configそのCopy to outputプロパティをに設定しましたCopy if newer(これにより、プロジェクトのビルド時に構成ファイルが実行可能フォルダーにコピーされます。

私の設定は、 (編集不可)または(ユーザーフォルダーに保存)appSettingsではなく、として分類する必要があります。次に例を示します。applicationSettingsuserSettingsAppData

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- single values -->
    <add key="Name" value="Chris" />
    <add key="Age" value="25" />

    <!-- lists, semi-colon separated-->
    <add key="Hobbies" value="Football;Volleyball;Wakeboarding" />
  </appSettings>
</configuration>

以下のコードを見て、それらにアクセスして変更する方法:

Configuration AppConfiguration =
    ConfigurationManager.OpenMappedExeConfiguration(
        new ExeConfigurationFileMap {ExeConfigFilename = "AppSettings.config"}, ConfigurationUserLevel.None);

var settings = AppConfiguration.AppSettings.Settings;
// access
var name = settings["Name"].Value;
var age = settings["Age"].Value;
var hobbies = settings["Hobbies"].Value.Split(new[]{';'});
// modify
settings["Age"].Value = "50";
// store (writes the physical file)
AppConfiguration.Save(ConfigurationSaveMode.Modified);

デフォルトのアプリケーション設定にビルトインを使用app.configし、編集可能なグローバル設定からそれらを分離したいと考えましたAppSettings.config。そのため、カスタム構成ファイルを使用します。


これは質問に対する直接的な回答ではありませんが、編集可能なアプリケーション設定をカスタム構成ファイルに保存して共有する方法に関する問題は解決します。

他のユーザーに役立つことを願っています!:-)

于 2013-10-09T15:24:48.893 に答える