从app.config文件中读取

时间:2010-03-08 08:40:15

标签: c#

我正在尝试阅读StartingMonthColumn和CategoryHeadingColumn 使用代码

从下面的app.config文件中
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>

8 个答案:

答案 0 :(得分:166)

ConfigurationSettings.AppSettings 已过时,您应该使用ConfigurationManager.AppSettings代替(您需要添加对System.Configuration的引用)

int value = Int32.Parse(ConfigurationManager.AppSettings["StartingMonthColumn"]);

如果在阅读应用设置时仍然遇到问题,请检查您的app.config文件是否正确命名。具体来说,它应该根据执行程序集命名,即MyApp.exe.config,并且应该与MyApp.exe位于同一目录中。

答案 1 :(得分:17)

ConfigurationSettings.AppSettings 已弃用,请参见此处:

http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings.aspx

那说,它应该仍然有用。

只是一个建议,但您确认您的应用程序配置是您的可执行文件正在使用的那个吗?

尝试附加调试器并检查以下值:

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

然后打开配置文件并按预期验证该部分。

答案 2 :(得分:17)

仅供将来参考,您只需将System.Configuration添加到参考库:

enter image description here

答案 3 :(得分:16)

尝试:

string value = ConfigurationManager.AppSettings[key];

详情请查看: Reading Keys from App.Config

答案 4 :(得分:6)

此:

Console.WriteLine( "StartingMonthColumn is {0}", ConfigurationManager.AppSettings["StartingMonthColumn"]);

对我来说很好。

请注意,ConfigurationManager位于System.Configuration命名空间中(因此您可能需要using System.Configuration;语句),并且由于您所读取的内容具有字符串类型,因此您需要解析你读入的内容,将其用作数字。

另外,请务必在项目或构建脚本中将system.configuration.dll设置为参考。

答案 5 :(得分:6)

原因很简单,您对ConfigurationSettings.AppSettings的调用未返回所需的配置文件。请尝试以下任何一种方式:

  • 确保您的应用配置与应用的exe文件具有相同的名称 - 附加扩展名.config,例如MyApp.exe.config
  • 或者您可以使用ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings["StartingMonthColumn"]

希望这有帮助

答案 6 :(得分:2)

尝试重建项目 - 将App.config的内容复制到 “&lt; YourProjectName.exe&gt; .config”在构建库中。

答案 7 :(得分:0)

在App.config中添加您运行应用程序的密钥“StartingMonthColumn”,例如在测试项目的App.config中。