C#console app无法读取辅助App.config

时间:2018-04-06 00:43:20

标签: c# .net console-application config app-config

我有一个C#控制台应用程序。它从App.config中读取值。

在App.config中,我使用了appSettings部分的file property

通过这种方式,我可以拥有一个辅助配置文件,该文件应该补充/覆盖主配置文件中定义的属性。

但是我发现辅助文件中的属性在运行时不可用。

App.config(摘录)

<appSettings file="App-not-in-source-control.config">
    <add key="THIS_IS_A_TEST_KEY" value="Test Value" />
      ....        
</appSettings>

应用 - 不在源-control.config

<appSettings>   
    <add key="SOMEVALUE" value="foobar"/> 
</appSettings>

Program.cs(摘录)

//THIS WORKS
var only4dbg = ConfigurationManager.AppSettings["THIS_IS_A_TEST_KEY"].ToString();
//THIS DOESNT WORK
var someValue = ConfigurationManager.AppSettings["SOMEVALUE"].ToString();

尝试阅读SOMEVALUE会导致以下异常

Unhandled Exception: System.NullReferenceException: 
Object reference not set to an instance of an object.

我在这里忽略了什么?

1 个答案:

答案 0 :(得分:1)

好的写完了我发现了问题所在。

如果您已将“复制到输出目录”设置为“运行时”,则辅助配置文件仅适用于运行时间。该文件的属性不属于&#39; Never&#39; (&#39;从不&#39;是默认设置)。

对我来说很奇怪“永远不会&#39;是默认设置;对于&#39; App.config&#39;而言,情况并非如此。辅助配置(至少在我的情况下)是使用&#39;添加|创建的新物品|应用程序配置文件&#39; “解决方案资源管理器”中的对话框序列&#39; - 要求Visual Studio创建一个不能用于项目构建输出的配置文件似乎没什么意义。

无论如何,希望这有助于其他人。