Pet*_*ras 5 c# clickonce winforms
我需要使用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
...
Run Code Online (Sandbox Code Playgroud)
我想从app.config中读取默认值!
所以我创建了自己的类派生自ApplicationSettingsBase,但我无法从app.config读取值.有任何想法吗?
我实现了 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
}
Run Code Online (Sandbox Code Playgroud)
并在 app.config 中添加了正确的 xml...
请参阅http://msdn.microsoft.com/en-us/library/8eyb2ct1(VS.80).aspx
它有效。哈!
一句警告!!ApplicationSettingsBase似乎在实现中使用了一些延迟加载。和集合保持为空ApplicationSettingsBase.Properties
,ApplicationSettingsBase.PropertyValues
直到至少访问一个属性。
UserSettings settings = new UserSettings();
string temp = settings.MyProperty;//without this line, settings.PropertyValues is empty!!
SettingsPropertyValueCollection properties = settings.PropertyValues;
Run Code Online (Sandbox Code Playgroud)