2012-01-16 26 views
2

現在WPF/.Netプロジェクトで作業中です このプロジェクトでは、ユーザーはアプリのスキンを完全に変更する選択肢があります 私は試しています構成管理、 を使用して提出した後、これらの設定を書くことが、私はapp.configアプリケーション設定をプログラムで更新して保存する方法

Public Sub SetApplicationSetting(pstrAppSettingName As String, pstrAppSettingValue As String) 
    Dim lobjconfig As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 

    lobjconfig.AppSettings.Settings.Add(pstrAppSettingName, pstrAppSettingValue) 
    lobjconfig.Save(ConfigurationSaveMode.Full) 
    ConfigurationManager.RefreshSection("appSettings") 
End Sub 

任意のアイデアを下に私の方法があり、ここで、app.configファイルに新しい値を追加することはできていないようですか?

は今路上で言葉は、私はすでにそこにあるものに追加カントということです、だから私は多分thougth私は、 まだ何を更新する前に、まずそれを削除する必要があり、ここに新しいコード

Dim lobjconfig As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 

      lobjconfig.AppSettings.Settings.Remove(pstrAppSettingName) 
      lobjconfig.AppSettings.Settings.Add(pstrAppSettingName, pstrAppSettingValue) 


       lobjconfig.AppSettings.Settings.CurrentConfiguration.Save() 
      lobjconfig.Save(ConfigurationSaveMode.Full, True) 

     ConfigurationManager.RefreshSection("appSettings") 
+0

試してみると何が起こるのですか? –

+0

これは、それぞれとeverylineの細かい部分を走りますが、pstrAppSettingValueとその部分もチェックしていますが、どういうわけかapp.configに追加されていません(少し修正して、すべてを保存するために)まだ何も –

+0

ハァッ?あなたはちょうどpstrAppSettingValueが "そこにある"と言って、 "追加されません" ...それは何ですか? –

答えて

2

私の推測では、すべてのユーザー(ConfigurationUserLevel.None)の設定を変更しようとしていることを、あなたはそうする権利を持っていないかもしれないということですここに多くのリンクがあります。それが失敗すると例外が発生すると思いますが、あなたが投げられたとは言わなかったので、私は間違っているかもしれません。

犯人を見つけるには、ConfigurationUserLevel.PerUserRoamingAndLocalまたはConfigurationUserLevel.PerUserRoamingを試して、それがうまくいくかどうかを確認してください。それを直接クリックするか、

Configuration config = ConfigurationManager.OpenExeConfiguration(
          Assembly.GetEntryAssembly().Location); 
+0

この回答はよく見えますが、ファイルがprojec内のbinフォルダにある場合は、あなたはそれを助けることができますか? - 回答ありがとうございます。 –

+1

@AshShafiee:お待ちください、実行中に使用された設定ファイルではない設定ファイルを更新しようとしていますか?実行すると、app.configの場所はプロジェクトの場所の場所とは異なります。 F5を使用して実行すると、アプリケーションはビルドディレクトリと構成ファイル(yourname.exe.config)にもコピーされます。変更は、そこまたはシステムの場所にあります。 – Abel

+0

これをもっと明確にするには:F5(デバッグ)またはCtrl-F5を実行しているときにコードを使って設定ファイルを変更すると、Visual Studioプロジェクトのapp.configは変更されません。 – Abel

0

です私の意見では、AppplicationSettingsは、あなたが 'スキン'ファイルを持っていない場合、このための好ましい方法です。これらは、ユーザー単位およびアプリケーション単位の設定を可能にします。 http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx

UPDATE:私はまた、あなたはすぐにあまりにもアプリケーション全体の設定にユーザー固有のから変更するデザイナを使用できる設定 http://msdn.microsoft.com/en-us/library/ms171565.aspx

を作成するためのこのリンクが役立つかもしれないと思います。 http://msdn.microsoft.com/en-us/library/aa730869.aspx

はまた、SO https://stackoverflow.com/search?q=applicationsettings+c%23

+2

私はアプリケーション設定の笑を使用していることを知っているので、ちょうどここに事実を指摘しています。 –

+0

は、この "(ConfigurationUserLevel.None)"が何であるかです。 –

+0

うん。ごめんなさい。最初は、appのconfig.configファイルをハックしようとしていたと思っていました。これは、もう1つの答えとして、あなたのユーザーには権利がないかもしれないことを示しています。おそらく、あなたはあなたがそれらを保存する権利を持つユーザーごとにスキンアイテムを保存する方が良いでしょう。 – kenny

1

を実行し、二重によるいくつかの場所でアプリ:

代わりに、私はそれが具体的には以下の行を使用することによって、あなたが特定の場所から設定を取得することができます違いを疑いますVisual StudioのCtrl + F5を押すと、設定の変更はビルドデバッグフォルダの下のapp設定ファイル(yourapp.exe.config)に保存されます。テストでは、F5(デバッグ)とCtrl + F5(デバッグなしで実行)を介してVSでアプリを実行すると、アプリの設定ファイルの変更点が異なります。

関連する問題