2016-11-24 15 views
1

ここでは、さまざまなユーザーが使用するwinformsデスクトップアプリケーションがあります。各ユーザーはアプリケーションをローカルで実行します。つまり、ビルドフォルダはユーザーごとに分かれています。また、アプリケーションを実行するためのローカルアプリケーション設定ファイルの下に異なる設定キーのセット(異なる接続文字列とキーオプション)があります。更新プログラムのバージョンがどれほど苦痛であるかを推測することができます。個別のユーザー用の個別の構成ファイル

私の目的は、このwinformsデスクトップアプリケーションを共有フォルダに入れて、それを各ユーザーに共有することです。ここでの課題は、構成が分かれていることです。

私は別の名前とコードで条件を使用して別のキーをマージしようとしましたが、仕事は大量に見えます。

binフォルダの下にあるこれらの設定ファイルをすべて収集し、ユーザ名に応じて切り替える方法はありますか?この問題に近づく最も簡単な方法は何ですか?

ありがとうございます。

+0

アプリケーションでデータベース接続が使用されていますか?すべてのユーザー固有の値を中央のデータベーステーブルに構成し、アプリケーションの初期化時にマッピングされるようにするとよいでしょう。 –

+0

私はポータブルSQLiteデータベースを提案しています。注意:アプリケーションには、SQLiteデータベース – GauravKP

+0

@SouvikGhoshを読み込むためのアクセス権が必要です。 DBキーでさえ、コンピュータごとに異なる接続ドライバのために異なる値を持つので、最良の方法ではないかもしれません。 –

答えて

0

私の提案は、修正された.NET設定メカニズムを使用することです。一般に、アプリケーション固有の設定やユーザー固有の設定を行うことができます。この場合、ユーザー設定を使用したいと考えています。

このアプローチの問題は、ユーザー設定がbinフォルダに保存されているが、どこか別の場所、すなわち% USERPROFILE%\ APPDATA \ローカルされていないことを...hereは詳細です)されます。ただし、カスタム設定プロバイダを作成することで、この動作を無効にすることができます。幸いにも誰かがすでにそれをしています。 CustomSettingsProviderからはanswerが魅力的です。ここでの合計に

は、ソリューションです:

  • あなたに設定ファイルを追加するためには、右 プロジェクトをクリックし、追加]を選択プロジェクト - >新規アイテムを... Finnally、 を見つけます設定ファイルテンプレート。追加したファイルをダブルクリックすると、デザイナーがポップアップします。このファイルがMySettingsと呼ばれているとします。
  • いくつかのユーザー固有の設定を定義します。

  • CustomSettingsProviderをプロジェクトに追加します。

  • は、プロジェクト内のMySettingsクラスを見つけて、そこに次の属性を追加します。

[System.Configuration.SettingsProvider(typeof(CustomSettingsProvider))]

  • 設定を使用する前に、ファイルへのパスを指定する必要があります。私はあなたのアプリケーションの最初のものの1つとしてそれを行うことをお勧めします。次の例では、設定ファイルは現在のフォルダ内に作成され、それらの名前は、ユーザー名が含まれています:

MySettings.Default.SettingsKey = [email protected]".\user_{Environment.UserName}.config";

  • 設定でファイルが空を作成しますCustomSettingsProvider存在しない場合は
  • アプリケーションコールを閉じるときMySettings.Default.Save();を使用して、ユーザー設定をファイルに保存します。
  • テンプレートファイルを作成するためにアプリケーションを1回だけ実行してください。次に、このテンプレートのコピーを作成して、他のユーザーが名前を変更するようにします。
  • 私のアプローチの欠点は、設定ファイルに接続文字列セクションがないことです。したがって、ConfigurationManager.ConnectionStringsへの参照は、MySettings.PropertyWithConnectionStringへの参照で置き換える必要があります。
+0

詳しいご提案ありがとうございます。私はこのアプローチを試みます。私はあなたの投稿を保持し、それに応じてあなたの答えを記入することを決定します。 –

+0

私は別のアプローチに従った。私はこれらのステップを経なかった。私はあなたの努力に対する答えを受け入れるでしょう。ありがとうございました。 –