2010-04-02 8 views
5

Ich muss eine Windows Forms-Anwendung mit ClickOnce-Bereitstellung bereitstellen. (VS2008, .NET 3.5) Und ich muss eine Konfigurationsdatei für diese App bereitstellen, die jeder Benutzer ändern kann. Aus diesem Grund verwende ich Anwendungseinstellungen anstelle von Standard-AppSetttings in app.config, so dass ich die Benutzerkonfiguration von App-Konfiguration trennen kann.Verwenden von Anwendungseinstellungen und Lesen von Standardwerten aus app.config

siehe http://msdn.microsoft.com/en-us/library/ms228995(VS.80).aspx

Erstellen einer Settings.settings Datei mit VS eine Klasse mit hartcodierte Standardwerte wie folgt generiert:

[global::System.Configuration.DefaultSettingValueAttribute("blahblah")] 
public string MyProperty 
... 

Ich möchte lesen Sie die Standardwerte aus der app.config!

Also habe ich meine eigene Klasse erstellt, die von ApplicationSettingsBase abgeleitet ist, aber ich kann das nicht bekommen, um Werte aus der app.config zu lesen. Irgendwelche Ideen?

Antwort

0

I umgesetzt Application wie folgt:

public class UserSettings : ApplicationSettingsBase 
     { 
      private static UserSettings defaultInstance = ((UserSettings)(ApplicationSettingsBase.Synchronized(new UserSettings()))); 

      public static UserSettings Default 
      { 
       get 
       { 
        return defaultInstance; 
       } 
      } 

      [UserScopedSetting()] 
      public string MyProperty 
      { 
       get { return (string)this["MyProperty"]; } 
       set { this["MyProperty"] = (string)value; } 
      } 
      //add more properties 
} 

und korrekte xml in app.config hinzugefügt ...

siehe http://msdn.microsoft.com/en-us/library/8eyb2ct1(VS.80).aspx

und es funktioniert. HTH!

Ein Wort der Warnung !! Die ApplicationSettingsBase erscheint, um etwas lazy-loading in der Implementierung zu verwenden. Die Sammlungen ApplicationSettingsBase.Properties und ApplicationSettingsBase.PropertyValues bleiben leer, bis mindestens eine Eigenschaft aufgerufen wird.

UserSettings settings = new UserSettings(); 
string temp = settings.MyProperty;//without this line, settings.PropertyValues is empty!! 
SettingsPropertyValueCollection properties = settings.PropertyValues; 
1

Ich schrieb meine eigene Konfigurationsklasse, um Einstellungen beizubehalten. Eine andere Sache, die für Sie hilfreich sein könnte, ist, wenn Sie möchten, dass die Einstellungen beibehalten werden, wenn die ClickOnce-App aktualisiert wird. Ich empfehle, sie an einen anderen Ort als den ClickOnce-Cache zu stellen. Dies wird es auch Ihren Benutzern erleichtern, es zu finden. Dieser Artikel empfiehlt LocalApplicationData (weil Sie mit Vista oder Win7 darauf schreiben können), aber Sie möchten es sogar unter MyDocuments ablegen, da Sie möchten, dass der Benutzer es bearbeiten kann.

http://robindotnet.wordpress.com/2009/08/19/where-do-i-put-my-data-to-keep-it-safe-from-clickonce-updates/

RobinDotNet

Verwandte Themen