2010-04-02 18 views
5

Necesito implementar una aplicación de Windows Forms utilizando la implementación de ClickOnce. (VS2008, .NET 3.5) Y debo proporcionar un archivo de configuración para esta aplicación que cualquier usuario puede modificar. Por esta razón, estoy usando la configuración de la aplicación en lugar de la configuración de la aplicación estándar en app.config para poder separar la configuración del usuario de la configuración de la aplicación.Uso de la configuración de la aplicación y valores predeterminados de lectura desde la aplicación.config

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

Creación de un archivo Settings.settings utilizando VS genera una clase con valores predeterminados no modificables como esto:

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

quiero leer los valores por defecto del app.config!

Así que creé mi propia clase derivada de ApplicationSettingsBase pero no puedo obtener esto para leer los valores de la aplicación.config. Alguna idea?

Respuesta

0

he implementado ApplicationSettingsBase de la siguiente manera:

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 
} 

y ha añadido XML correcto en app.config ...

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

y funciona. HTH!

Una palabra de advertencia! ApplicationSettingsBase aparece para usar algunas cargas diferidas en la implementación. Las colecciones ApplicationSettingsBase.Properties y ApplicationSettingsBase.PropertyValues permanecen vacías hasta que se acceda al menos a una propiedad.

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

Escribí mi propia clase de configuración para conservar la configuración. Otra cosa que podría ser útil para usted es que si desea conservar la configuración cuando se actualiza la aplicación ClickOnce, le recomiende que la coloque en otro lugar que no sea la caché ClickOnce. Esto también hará que sea más fácil para sus usuarios encontrarlo. Este artículo recomienda LocalApplicationData (porque puede escribir con Vista o Win7), pero es posible que desee colocarlo en MyDocuments ya que desea que el usuario pueda editarlo.

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

RobinDotNet

Cuestiones relacionadas