使用应用程序设置并从app.config读取默认值

时间:2010-04-02 06:37:41

标签: c# winforms clickonce

我需要使用ClickOnce部署部署Windows窗体应用程序。 (VS2008,.NET 3.5) 我需要为此应用程序提供任何用户都可以修改的配置文件。 出于这个原因,我在app.config中使用应用程序设置而不是标准appSetttings,因此我可以将用户配置与app config分开。

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

使用VS创建一个Settings.settings文件,生成一个具有硬编码默认值的类,如下所示:

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

我想从app.config中读取默认值!

所以我创建了自己的类派生自ApplicationSettingsBase,但是我无法从app.config读取值。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我编写了自己的配置类来保留设置。另一件可能对您有所帮助的是,如果您希望在更新ClickOnce应用程序时保留设置,我建议您将其放在ClickOnce缓存以外的其他位置。这也将使您的用户更容易找到它。本文推荐使用LocalApplicationData(因为您可以使用Vista或Win7写入它),但您甚至可能希望将其放在MyDocuments下,因为您希望用户能够对其进行编辑。

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

RobinDotNet

答案 1 :(得分:0)

我实现了ApplicationSettingsBase,如下所示:

    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
}

并在app.config中添加了正确的xml ...

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

它有效。 HTH!

一句警告!! ApplicationSettingsBase 出现以在实现中使用一些延迟加载。 <{1}}和ApplicationSettingsBase.Properties集合在访问至少一个属性之前保持为空。

ApplicationSettingsBase.PropertyValues