在运行时替换app.config中的某些文本

时间:2013-11-27 13:09:51

标签: c# app-config

我正在编写一个csharp控制台应用程序。根据用户输入,我想在运行时更新我的​​app.config文件。

每次我需要用另一个字符串替换字符串时。

如果用户选择了devenvironment,我需要用devenvironement替换所有出现的测试环境。

请在运行时建议如何执行此操作。

2 个答案:

答案 0 :(得分:4)

你不这样做。别。永远。使用用户设置或提出自己的设置。用户空间应用程序不允许写入Program Files文件夹。不。

您可以创建一个用户设置,用于存储用户选择的环境类型。概括所有应用程序设置,使它们包含一个占位符,该占位符包含您需要在开发/测试之间进行更改的部分,并替换代码中的该部分。

示例:为应该特定于环境的日志文件创建设置。此设置的值可以是

"[Environment]\MyProgram\Logs"

然后,在你的代码中,你会使用这样的东西来创建真正的路径:

string logPath = Properties.Settings.Default.LogPath.Replace("[Environment]", IsDevEnvironment ? "C:\\DevEnvironment\\Test", "C:\\TestEnvironment");

当然,你在这里填写真实的价值观。请注意,它们也可以来自应用程序或用户设置。

答案 1 :(得分:1)

在一般情况下,在运行时更改配置值不是一个好习惯。

但是如果它是必需的并且没有任何其他方法可以克服这种情况那么你可以更新App.Config文件:

以下是更新 AppSettings 值的代码示例:

var config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
if (config.AppSettings == null || config.AppSettings.Settings == null)
{
    return;
}

config.AppSettings.Settings["Key"].Value = "My Value";
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);

建议:我建议创建xml或文本文件,然后将其存储在 AppData 中。下次需要时,您可以从该文件中获取数据。

This显示了如何在AppData文件夹中写入文件。