我需要使用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读取值。 有什么想法吗?
答案 0 :(得分:1)
我编写了自己的配置类来保留设置。另一件可能对您有所帮助的是,如果您希望在更新ClickOnce应用程序时保留设置,我建议您将其放在ClickOnce缓存以外的其他位置。这也将使您的用户更容易找到它。本文推荐使用LocalApplicationData(因为您可以使用Vista或Win7写入它),但您甚至可能希望将其放在MyDocuments下,因为您希望用户能够对其进行编辑。
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