C# 正在读取app.config文件

C# 正在读取app.config文件,c#,C#,我正在尝试阅读StartingMonthColumn和CategoryHeadingColumn 使用下面的app.config文件中的代码 ConfigurationSettings.AppSettings["StartingMonthColumn"] 但是它返回null,ConfigurationSettings.AppSettings.Count也返回零 请帮助我在windows应用程序中阅读此内容 <configuration> <configSections

我正在尝试阅读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>

已过时,您应该改用(您需要添加对的引用)

如果在应用程序设置中读取时仍有问题,请检查
app.config
文件的名称是否正确。具体地说,它应该根据执行的程序集命名,即
MyApp.exe.config
,并且应该与
MyApp.exe
位于同一目录中,如下所示:

Console.WriteLine( "StartingMonthColumn is {0}", ConfigurationManager.AppSettings["StartingMonthColumn"]);
对我来说很好

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


另外,请确保将
system.configuration.dll
设置为项目或生成脚本中的参考。

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

也就是说,它应该仍然有效

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

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

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
然后打开配置文件并验证节是否如您所期望的那样存在。

尝试:

string value = ConfigurationManager.AppSettings[key];
有关更多详细信息,请查看:
原因很简单,您对
ConfigurationSettings.AppSettings的调用没有返回所需的配置文件。请尝试以下任一方法:

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

希望这有助于

尝试重建您的项目-它会将
App.config
的内容复制到
“.config”在生成库中。

还可以在App.config中添加运行应用程序的键“StartingMonthColumn”,例如在测试项目的App.config中。

仅供将来参考,只需将
系统.Configuration
添加到参考库中:


在更改项目根目录下的配置文件时,是否尝试从\bin\debug文件夹运行应用程序?否则,请在运行清理后更改配置并重新生成代码。文件名不是“app.config”,对吗?在您的项目中,它的名称是肯定的,但在应用程序输出目录中,它的名称应该与您的输出二进制文件+.config(例如“MyLibrary.dll.config”或“MyProgram.exe.config”等)的名称相同。@BrianSlugs83谢谢,伙计,我想知道为什么我的应用程序会崩溃。现在,经过两天的到处搜索,答案在评论中。我只有“app.config”而没有“MyProgram.exe.config”。请查看解决方案。感谢获取ConfigurationManager.Appsettings我使用.Net 2.0 Framework时应该添加的引用是什么?您需要对
System.Configuration.dll
的引用。
ConfigurationManager
类是在.NET 2.0中添加的,因此您应该没问题。当我尝试获取AppDomain.CurrentDomain.SetupInformation.ConfigurationFile的值时,我得到的是C:\\Program Files\\Microsoft Office\\OFFICE11\\exCEL.EXE.config,它不是我的配置文件。。。我应该做什么这是正确的配置文件。。。可能只是你没有预料到而已。事实上,在本例中,我相信C:\Program Files\Microsoft Office\OFFICE11\Excel.EXE.config是全局配置,如果将类似名称的Excel.EXE.config放置在与程序集相同的目录中,将从中读取应用程序设置。有关详细信息,请参阅这些链接:如果ConfigurationSettings.AppSettings[“StartingMonthColumn”]返回null或空字符串,我怀疑Int32.Parse在尝试分析这些值时会引发异常。@BiterCoder,是的,但是,您的app.config文件应始终具有正确的配置。如果OP想要在其中添加某种形式的处理,即TryParse,则尽一切可能。但是,这不是问题所在。请注意,您也可以通过Settings.Default.*(即,在本例中是Settings.Default.StartingMonthColumn)访问强类型版本的值。@brainslaugs83注意,您的用户设置与应用程序设置混淆。如果您想要对应用程序设置进行强类型访问,则需要实现一个不正确的自定义,无论值的范围是“用户”还是“应用程序”,它都会从app.config中提取值(从GUI设计器中,您可以选择每个设置的范围)。您的答案比这里的第一个答案要好,每个人都忘了说,你必须添加一个引用,我是从nuget安装的,这是行不通的。我很高兴我尝试了这个建议。
string value = ConfigurationManager.AppSettings[key];