在[项目名].exe.config的配置文件中插入一个节点的问题

hulongchuan 2011-10-14 01:38:25
我建立的项目的配置文件比如为project.exe.config,我想在此项目中增加一个节点,用的是下面的方法:
Configuration config = ConfigurationManager.OpenExeConfiguration(路径+project.exe.config);

AppSettingsSection app = config.AppSettings;

app.Settings.Add(node, value);

config.Save(ConfigurationSaveMode.Modified);

这种方法怎么不能实现啊?请问如何才能正确插入这个配置文件一个节点,即使程序退出,也会保存在配置文件中!
...全文
200 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hulongchuan 2011-10-17
  • 打赏
  • 举报
回复
回复:mabaolin
你说的这种方法不行的,修改的配置文件是 *.vhost.exe.config
我已经弄好了,得用修改xml的方法来修改这个*.exe.config
mabaolin 2011-10-14
  • 打赏
  • 举报
回复
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["ip"].Value = this.txtPort.Text;
config.AppSettings.Settings.Add("Asd", "aewre");
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
这是我运行成功的例子,刚试过。

lz的程序应当没有问题。 只不过运行完成后,lz应当查看 *.exe.config这个文件,而不是app.config
cf370697816 2011-10-14
  • 打赏
  • 举报
回复
路过 帮顶
hulongchuan 2011-10-14
  • 打赏
  • 举报
回复
谢谢你啊,不过我还是不明白,比如在你的例程中:
view plaincopy to clipboardprint?<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Directory" value="C:/Documents and Settings"/>
</appSettings>
</configuration>
我想在<appsettings>这个节点下插入一个<add key="key" value="key_value"/>,
怎么实现啊?
mabaolin 2011-10-14
  • 打赏
  • 举报
回复
一开始调试时看到控制结果是想要的结果,但看app.config配置文件内容没变(vs2008 F5调试模式下是修改 程序集名称.vshost.exe.config配置文件)还以为是代码有问题,网上搜,也有人碰过到此现像,原来是自己没有理解到MSDN的说明。(还是有文化差异啊)

如: Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Console.WriteLine("config.FIlePath: " + config.FilePath + "/n");

查看config.filePath值,即了解明白了。
mabaolin 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hulongchuan 的回复:]
我要的是在程序中动态插入一个节点!
[/Quote]
我也没说不是呀。 你的程序没问题,出问题的是你运行的方式。


使用ConfigurationManager类 读写配置文件app.config,以下为代码:

view plaincopy to clipboardprint?using System;
using System.Configuration;

static class Program
{
static void Main()
{
showConfig();
UpdateAppSettings();
showConfig();

Console.ReadKey(true);
}

private static void showConfig()
{
string = ConfigurationManager.AppSettings["Directory"];
Console.WriteLine("AppSetting配置节 Path key的value为:" + dir + "/n");
}

/// <summary>
/// UpdateAppSettings
/// </summary>
public static void UpdateAppSettings()
{
// Get the configuration file.
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Console.WriteLine("config.FIlePath: " + config.FilePath + "/n");
config.AppSettings.Settings["Directory"].Value = "tset";

// Save the configuration file.
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings");
}
using System;
using System.Configuration;

static class Program
{
static void Main()
{
showConfig();
UpdateAppSettings();
showConfig();

Console.ReadKey(true);
}

private static void showConfig()
{
string = ConfigurationManager.AppSettings["Directory"];
Console.WriteLine("AppSetting配置节 Path key的value为:" + dir + "/n");
}

/// <summary>
/// UpdateAppSettings
/// </summary>
public static void UpdateAppSettings()
{
// Get the configuration file.
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Console.WriteLine("config.FIlePath: " + config.FilePath + "/n");
config.AppSettings.Settings["Directory"].Value = "tset";

// Save the configuration file.
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings");
}
app.config内容:

view plaincopy to clipboardprint?<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Directory" value="C:/Documents and Settings"/>
</appSettings>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Directory" value="C:/Documents and Settings"/>
</appSettings>
</configuration>



代码结果:app.config只能作为初始化的定义,工程生成后运行程序集名称.exe 修改生成后的 程序集名称.exe.Config文件

一开始调试时看到控制结果是想要的结果,但看app.config配置文件内容没变(vs2008 F5调试模式下是修改 程序集名称.vshost.exe.config配置文件)还以为是代码有问题,网上搜,也有人碰过到此现像,原来是自己没有理解到MSDN的说明。(还是有文化差异啊)

如: Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Console.WriteLine("config.FIlePath: " + config.FilePath + "/n");

查看config.filePath值,即了解明白了。

hulongchuan 2011-10-14
  • 打赏
  • 举报
回复
我要的是在程序中动态插入一个节点!
mabaolin 2011-10-14
  • 打赏
  • 举报
回复
生成exe文件,直接运行exe文件,然后打开exe并列的config文件

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧