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 创建一个配置文件,该文件不可用于项目构建输出。
不管情况如何 - 希望这对其他人有所帮助。
我有一个 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 创建一个配置文件,该文件不可用于项目构建输出。
不管情况如何 - 希望这对其他人有所帮助。