我开始在 VS2010 中向我的 C# 项目添加设置,方法是在 Project -> Properties -> Settings 选项卡中添加行。在属性下自动生成了一个 Settings.settings 文件(带有 Settings.Designer.cs 文件)。
但是当我尝试访问代码中的某些设置时,ConfigurationManager.AppSettings["NameOfSetting"]
它总是返回 null;AppSettings.Count 始终为 0。此外,我检查了 bin 文件夹,当我构建项目时,那里没有 MyProjectName.exe.config 文件或 app.config 文件。
VS 项目可能有什么问题?我如何强制它像它应该的那样创建 .exe.config 文件?
更新:
我从我的项目中完全删除/删除了 app.config 和 Settings 文件,然后在项目属性中重新添加了一项设置,以便从头开始重新创建它。当我再次构建项目时,这一次 ProjectName.exe.config 文件位于\bin 文件夹中。但是我的代码得到了相同的结果:ConfigurationManager.AppSettings["MySetting"] 为 null 并且 AppSettings.Count = 0。
这是项目文件夹中自动生成的 app.config 文件,它与在构建中创建的 Project.exe.config 文件相同:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MyDarnProject.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<MyDarnProject.Properties.Settings>
<setting name="MySetting" serializeAs="String">
<value>21937058</value>
</setting>
</MyDarnProject.Properties.Settings>
</applicationSettings>
</configuration>
我注意到该元素被命名为 applicationSettings,而不是预期的 appSettings。而且设置本身是完全不同的,有一个元素和子元素,而不是<add key="MySetting" value="21937058"/>
像其他人的例子。我正在使用 Visual Studio Professional 2010,版本 10.0.40219.1 SP1Rel
Settings.Designer.cs 代码的所有内容都与下面给出的示例完全相同,除了 get 没有设置,但我认为这没什么大不了的。
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("21937058")]
public long MySetting {
get {
return ((long)(this["MySetting"]));
}
}
MyProject.Properties.Settings.Default.MySetting
确实访问设置值!所以我想我可能不得不这样做;我将考虑一种解决方法,因为我仍然不知道为什么该项目没有像我做过的所有其他项目那样构建 ProjectName.exe.config 文件。