从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中。