从app.config文件读取
我正在尝试从下面的app.config文件使用代码读取StartingMonthColumn和CategoryHeadingColumn
ConfigurationSettings.AppSettings["StartingMonthColumn"]
但它返回null,也ConfigurationSettings.AppSettings.Count返回零
请帮我在Windows应用程序中阅读这个
<configuration> <configSections> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="CTARepository.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> </sectionGroup> </configSections> <userSettings> <CTARepository.Properties.Settings> <setting name="Setting" serializeAs="String"> <value /> </setting> </CTARepository.Properties.Settings> </userSettings> <appSettings> <add key="StartingMonthColumn" value="7"/> <add key="CategoryHeadingColumn" value="1"/> </appSettings> </configuration>
configuration设置 .AppSettings已经过时 ,您应该使用configurationpipe理器 .AppSettings来代替(您将需要添加对System.Configuration的引用)
int value = Int32.Parse(ConfigurationManager.AppSettings["StartingMonthColumn"]);
如果您在读取应用程序设置时仍然遇到问题,请检查您的app.config
文件是否正确命名。 具体来说,它应该根据正在执行的程序集命名,即MyApp.exe.config
,并且应该与MyApp.exe
位于同一个目录中。
ConfigurationSettings.AppSettings已弃用 ,请参阅此处:
http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings.aspx
这就是说,它应该仍然有效。
只是一个build议,但你确认你的应用程序configuration是你的可执行文件正在使用?
尝试附加debugging器并检查以下值:
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
然后打开configuration文件并validation该部分是否如您所料。
尝试:
string value = ConfigurationManager.AppSettings[key];
有关更多详细信息,请检查: 从App.Config中读取密钥
只是为了将来的参考,你只需要添加System.Configuration
到你的引用库:
这个:
Console.WriteLine( "StartingMonthColumn is {0}", ConfigurationManager.AppSettings["StartingMonthColumn"]);
对我来说工作得很好。
请注意, ConfigurationManager
位于System.Configuration
命名空间中(因此您可能需要using System.Configuration;
语句),并且由于您读入的内容是stringtypes,因此您需要parsing读入的内容以使用它作为一个数字。
另外,请确保将system.configuration.dll
设置为项目或构build脚本中的参考。
原因很简单,您调用ConfigurationSettings.AppSettings
不会返回所需的configuration文件。 请尝试以下任何方式:
- 确保您的应用程序configuration与应用程序的exe文件具有相同的名称 – 扩展名为.config,例如MyApp.exe.config
- 或者你可以使用
ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings["StartingMonthColumn"]
希望这可以帮助
尝试重build项目 – 它将App.config
的内容复制到构build库中的“<YourProjectName.exe> .config”。
在App.config中添加运行应用程序的密钥“StartingMonthColumn”,例如在testing项目的App.config中。