2010-11-24 190 views
1

我知道如何获得一个句柄并写入到这一点:C#写入App.config文件

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="Param1" value="" /> 
    <add key="Param2" value="" /> 
    <add key="Param3" value="" /> 
    </appSettings> 
</configuration> 
时,它的结构是这样大约

可是什么?

<configuration> 
    <userSettings> 
     <MyEXEName.Properties.Settings> 
      <setting name="some_setting" serializeAs="String> 
       <value>some value</value> 
      </setting> 
     </MyEXEName.Properties.Settings> 
    </userSettings> 
</configuration> 
+1

你可以尝试使用ConfigurationManager.GetSection,虽然我不确定这样的结构可以访问它。我只使用了键/值结构,与appSettings相同,并且工作正常。 – 2010-11-24 16:31:36

回答

0

.Net Framework和Visual Studio非常友好,可以在您的应用程序名称空间上生成一个静态的Properties类。您可以通过此类访问和设置用户设置。考虑到设置值保存在用户的漫游配置文件中,所以即使应用文件夹中的配置文件具有某些设置,用户设置也会保存在%USERPROFILE%\AppData的某处。

继提供的信息,您可以访问属性,如:

MyEXEName.Properties.Settings.some_setting = "new value"; 
+0

我有这些在设置中,你是正确的。当代码通过MSI部署时,我想更改app.config。我有一个自定义安装程序类,它从安装程序的自定义文本输入屏幕获取用户输入的值。当程序运行时,你说MyEXE.app.config值不被使用? – 2010-11-24 16:46:25

1

然后你想要Application Settings

这里(从MSDN解除)的例子:

public class MyUserSettings : ApplicationSettingsBase 
{ 
    [UserScopedSetting()] 
    [DefaultSettingValue("white")] 
    public Color BackgroundColor 
    { 
     get 
     { 
      return ((Color)this["BackgroundColor"]); 
     } 
     set 
     { 
      this["BackgroundColor"] = (Color)value; 
     } 
    } 
} 

然后你可以使用它像这样:

MyUserSettings mus; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    mus = new MyUserSettings(); 
    mus.BackgroundColor = Color.AliceBlue; 
    this.DataBindings.Add(new Binding("BackColor", mus, "BackgroundColor")); 
} 

void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    mus.Save(); 
} 

我建议你阅读MSDN上的整体部分,不过,因为它提供了很多有用的信息。

0
string someSetting = Settings.Default.some_setting; 

此文件由VS自动生成你可以在项目 - >属性 - > Settings.settings打开它。 执行应用程序时注意,此设置保存在%APPDATA%(应用程序用户文件夹)中(因为%APPDATA%中的文件夹具有随机名称,所以可以搜索* .config)。