我试图使用代码从下面的app.config文件中读取StartingMonthColumn和CategoryHeadingColumn
ConfigurationSettings.AppSettings["StartingMonthColumn"]
Run Code Online (Sandbox Code Playgroud)
但它返回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>
Run Code Online (Sandbox Code Playgroud) 我很惊讶Visual Studio中这两种机制的明显冗余来存储和管理桌面应用程序设置:
app.config文件,向该<appSettings>部分添加项目.可以使用ConfigurationManager类从代码中检索这些内容.Settings类,用于在运行时对类型安全的设置检索.这两种机制似乎服务于相同(或几乎相同)的目的.我知道存在一些差异,但我也对重叠及其后果感到困惑.例如,当我使用Visual Studio向Settings.settings文件添加设置时,我输入的所有信息也最终作为app.config文件中的条目.显然,存在同步机制:如果我更改了app.config文件中的设置,Visual Studio会在Settings.settings下次在编辑器中打开时提示我更新文件.
我的问题是:
app.configover 的最常见方案是什么Settings.settings,反之亦然?Settings.settings并且在app.config部署后更改了值,会发生什么?Settings.settings由于已经编译和分发,因此不会发生同步.注意.我已经搜索了关于这个主题的问题,但我更加困惑.例如,这里对这个问题的答案是相当矛盾的,并没有说清楚.
注意2.我知道这app.config是一个设计时文件名,我熟悉Visual Studio复制的动态并将其重命名为可执行文件夹.
我真的不了解设置和配置文件之间的交互/差异.如果我在设置文件中添加一个条目,它也会被添加到app.config中.这是否意味着更改app.config中的值将更新设置?如果没有,我如何更新实时应用程序中的设置?使用设置文件而不是直接在app.config中放置内容的一般目的是什么?
我有一个组件从标准.NET配置(app.config)文件中读取一些配置.
当我为这个组件运行单元测试(NUnit)时(使用TD.NET),我注意到没有读取配置文件.
经检查 AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
我注意到它的'值设置为C:\ Users\ltal\AppData\Local\Temp\tmp6D2F.tmp(一些临时随机位置).
为什么会发生这种情况有原因吗?(是NUnit还是TD.NET的错?)
我想我可以自己设置这个SetupInformation对象,为了测试,还没有尝试过,但仍然想知道为什么它是这样创建而不是默认.