我有一个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.
我在这里忽略了什么?
答案 0 :(得分:1)
好的写完了我发现了问题所在。
如果您已将“复制到输出目录”设置为“运行时”,则辅助配置文件仅适用于运行时间。该文件的属性不属于&#39; Never&#39; (&#39;从不&#39;是默认设置)。
对我来说很奇怪“永远不会&#39;是默认设置;对于&#39; App.config&#39;而言,情况并非如此。辅助配置(至少在我的情况下)是使用&#39;添加|创建的新物品|应用程序配置文件&#39; “解决方案资源管理器”中的对话框序列&#39; - 要求Visual Studio创建一个不能用于项目构建输出的配置文件似乎没什么意义。
无论如何,希望这有助于其他人。