C# 控制台应用无法读取辅助 App.config

C# console app can't read auxiliary App.config

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

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

通过这种方式,我可以获得一个辅助配置文件,该文件应该 supplement/overwrite 在主配置文件中定义的属性。

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

App.config(摘录)

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

App-not-in-source-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.

我在这里忽略了什么吗?

好的,写完了我意识到问题出在哪里了。

如果您将文件的 'Copy to Output Directory' 属性 设置为 'Never' 以外的内容,则辅助配置文件仅在 运行 时间可用('Never' 是默认设置)。

令我感到奇怪的是 'Never' 是默认设置; 'App.config' 并非如此,辅助配置(至少在我的情况下)是使用 'Solution Explorer' 中的 'Add | New Item | Application Configuration File' 对话序列创建的 - 似乎没有太多意义Visual Studio 创建一个配置文件,该文件不可用于项目构建输出。

不管情况如何 - 希望这对其他人有所帮助。