从外部配置文件中读取部分appSettings

10
我想从外部配置文件中读取控制台应用程序的appSettings部分,例如名为secrets.config的文件,而其余部分我想从app.config中读取。 目前,我已经设置好了,但似乎没有从secrets.config中读取,并且它甚至没有告诉我读取失败的原因。 在我的app.config中:
<appSettings file = "secrets.config">
  <add key = "Foo" value = "Bar" />
</appSettings>
在与 app.config 文件相同的文件夹中的 secrets.config 中。
<appSettings>
  <add key = "Secret" value = "Tiger" />
</appSettings>

在我的代码中

var secret = ConfigurationManager.AppSettings["Secret"];

// secret turns out to be null

1
哦,抱歉,我刚意识到你已经采取了一个在那个问题的答案中详细说明的方法。 - James Thorpe
1个回答

7
原来我写的外部文件路径是错误的。
根据这个页面上的文档: 指定的路径是相对于主配置文件的。对于 Windows Forms 应用程序,这将是二进制文件夹(如/bin/debug),而不是应用程序配置文件所在的位置。对于 Web Forms 应用程序,该路径是相对于应用程序根目录的,即 web.config 文件所在的位置。 我更改了路径如下,它就工作了:
<appSettings file = "..\..\secrets.config">
</appSettings>

1
同样的方法对我也起作用了。如果 app.SECRETS.config 文件与 app.config 文件相邻,即 <appSettings file="..\..\App.SECRETS.config"> - Tim Reilly
有点晚了,但是你可以在不更改路径的情况下让它工作,方法是指示Visual Studio在构建时将文件复制到输出文件夹中。这可以通过在“解决方案资源管理器”中右键单击文件>属性,然后选择“复制到输出目录”=“仅在较新时复制”或“始终复制”来完成。 - Ronald Rey

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