如何在一个项目中使用C#从多个配置文件中读取值?

12

在我的项目中,我有两个应用配置文件,分别为 app.configaccessLevel.config。 现在使用 OpenExeConfiguration 方法,我能够访问 app.config.exe 文件,但无法访问 accessLevel.config 文件。请帮忙解决。

我有两个配置文件的主要原因是为了展示它们之间的区别,并使代码简单化。 我需要在我的 C# 代码中读取 accessLevel.config 文件的值。

尝试了以下代码但没有用:

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.AppSettings.File = "App2.config";
1个回答

28

请参考这里

将以下内容放入你的App.config中:

<appSettings file="accessLevel.config"/>

然后再有一个名为accessLevel.config的文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
  <add key="TestSetting" value="TestValue"/>
</appSettings>

然后您可以像这样在代码中访问配置值:

string value = ConfigurationManager.AppSettings["TestSetting"];

确保 accessLevel.config 已设置为复制到输出目录(在 Visual Studio 中右键单击该文件 -> 属性 -> 复制到输出目录 -> 如果较新则复制)。


我应该在 app.config.exe 中加入这行代码吗? - Praveen
已经进行了编辑和修复-看看能否让它正常工作?你是在尝试将appSettings移动到另一个文件中,还是其他配置部分?无论哪种情况,都适用相同的原则。 - Mike
@Aniket完成。对不起,我错过了合适的时间去处理它。 - Praveen
3
请注意第二个配置文件(accessLevel.config)以<appSettings />元素开头,而不是默认的<configuration />元素。我花了大约10分钟才意识到这一点;) - Jan 'splite' K.
这个“从多个配置文件中读取值”的功能是如何实现的? 只有通过app.config读取accessLevel.config中的值。 - Erik
因为涉及到两个(多个)配置文件,正如您所指出的那样。这是对OP问题的解决方案,使他们能够将accessLevel配置保留在自己的文件中,但读取其值就像它们来自app.config一样。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接