2010-04-02 6 views
5

Devo distribuire un'applicazione Windows Form utilizzando la distribuzione ClickOnce. (VS2008, .NET 3.5) E ho bisogno di fornire un file di configurazione per questa app che qualsiasi utente può modificare. Per questo motivo, sto utilizzando le Impostazioni applicazione invece delle appSettings standard in app.config in modo da poter separare la configurazione utente dalla config dell'app.Utilizzo delle impostazioni dell'applicazione e lettura dei valori predefiniti da app.config

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

Creazione di un file Settings.settings utilizzando VS generato una classe con i valori di default hard-coded come questo:

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

voglio leggere i valori di default dal app.config!

Così ho creato la mia classe derivata da ApplicationSettingsBase ma non riesco a leggere i valori da app.config. Qualche idea?

risposta

0

ho implementato ApplicationSettingsBase come segue:

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 
} 

e ha aggiunto corretta XML in app.config ...

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

e funziona. HTH!

Una parola di avvertimento !! L'ApplicationSettingsBase appare per utilizzare un caricamento lento nell'implementazione. Le raccolte ApplicationSettingsBase.Properties e ApplicationSettingsBase.PropertyValues rimangono vuote finché non si accede a almeno una proprietà.

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

Ho scritto la mia classe di configurazione per mantenere le impostazioni. Un'altra cosa che potrebbe esserti utile è se desideri che le impostazioni vengano mantenute quando l'app ClickOnce viene aggiornata, ti consiglio di metterla in un posto diverso dalla cache ClickOnce. Ciò renderà anche più facile per i tuoi utenti trovarlo. Questo articolo raccomanda LocalApplicationData (perché puoi scriverci sopra con Vista o Win7), ma potresti anche volerlo mettere in MyDocuments poiché desideri che l'utente possa modificarlo.

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

RobinDotNet

Problemi correlati