app.config 修改值 c#

Posted

技术标签:

【中文标题】app.config 修改值 c#【英文标题】:app.config modify value c# 【发布时间】:2015-08-18 20:51:41 【问题描述】:

问题在这里解决App.Config change value

接受的答案是

string appPath = System.IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly().Location);          
string configFile = System.IO.Path.Combine(appPath, "App.config");

ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();         
configFileMap.ExeConfigFilename = configFile;          

System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
config.AppSettings.Settings["YourThing"].Value = "New Value"; 
config.Save(); 

但是当我尝试实现相同的功能时,我发现了一个奇怪的行为。上面的答案在设置值时会抛出NullReferenceExceptionconfig.AppSettings.Settings 计数为零。

所以我将 configFile 路径设置为项目内的 app.config 路径

string configFile = @"D:\App\Schedule\Schedule\App.config";

这会修改项目中的 app.config 以及 bin/debug 中的 >.exe.config。但我不认为这是一个可行的解决方案,因为应用程序可以部署在任何路径上。所以硬编码configPath是行不通的。

然后我又按照给定的方式修改了配置文件

string configFile = System.IO.Path.Combine(appPath, "<appname>.exe.config");

上面的代码只运行并修改了>.exe.config,而不是项目内的app.config。

我真的不确定哪个是正确的,或者我遗漏了什么。

我使用的是 VS 2012,c# 4.5,它是控制台应用程序。到目前为止,我的控制台中没有其他代码,app.config 是

<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <appSettings>
        <add key="YourThing" value="" />
    </appSettings>
</configuration>

【问题讨论】:

【参考方案1】:

这只是对app.config的错误理解。 您期望应用程序修改不正确的源代码。

当您运行程序时,它会在您的 bin/debug 或 bin/release 文件夹中创建 app.config 的副本。

您的第二个解决方案很好。应用程序按预期工作。

【讨论】:

是的,我确实理解,但是接受者有很好的方法来做同样的事情。为什么它对我不起作用:(我看到接受的答案比我的更优雅【参考方案2】:
Configuration config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
            config.AppSettings.Settings["PresentationFolder"].Value = path;
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");

其中:路径 - 是“新值”,“appSettings” - 是 App.config 中的部分

【讨论】:

以上是关于app.config 修改值 c#的主要内容,如果未能解决你的问题,请参考以下文章

如何在C#中更新app.config connectionstring数据源值?

app.config的坑

.net中 App.config的作用是啥?

使用 NUnit 时,我应该如何在运行时修改 app.config?

C#app.config配置文件多组<appSettings>怎么办?

c# WinForm 我修改App.Config保存后会自动弹出对话框,怎么让它自动选择“全部”保存