在 Windows 窗体 C# 应用程序中拥有配置文件的最简单方法
Posted
技术标签:
【中文标题】在 Windows 窗体 C# 应用程序中拥有配置文件的最简单方法【英文标题】:Simplest way to have a configuration file in a Windows Forms C# application 【发布时间】:2010-09-11 23:41:36 【问题描述】:我真的是 .NET 新手,但我仍然不了解配置文件的工作原理。
每次我在 Google 上搜索它时,我都会得到关于 web.config 的结果,但我正在编写一个 Windows 窗体应用程序。
我发现我需要使用 System.Configuration 命名空间,但文档没有帮助。
如何定义我的配置文件是 XYZ.xml?或者它是否有配置文件的“默认”名称?我还是没听懂。
另外,我如何定义一个新的部分?我真的需要创建一个继承自 ConfigurationSection 的类吗?
我想要一个包含一些值的配置文件,如下所示:
<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>
有简单的方法吗?你能简单地解释一下如何读写一个简单的配置文件吗?
【问题讨论】:
您的 .NET 版本是什么?对于 2.0 及更高版本,有一种非常可爱的方式叫做设置。 @Seven 这是一个错字,但它可能意味着“用一个例子来解释”:) 【参考方案1】:您想使用 App.Config。
当您向项目中添加新项目时,会有一个称为应用程序配置文件的文件。添加那个。
然后在配置/应用设置部分添加键
喜欢:
<configuration>
<appSettings>
<add key="MyKey" value="false"/>
通过做访问成员
System.Configuration.ConfigurationSettings.AppSettings["MyKey"];
这适用于 .NET 2 及更高版本。
【讨论】:
实际上它适用于所有版本的 .NET,从 v1.0 开始。 .NET 2.0 中的新类是 ConfigurationManager。 我个人使用“应用程序属性”上的“设置”选项卡(仅限 Framework 2.0 及更高版本),因为 Visual Studio 将为您的设置生成强类型属性的代码。它们还可以包括在运行时读/写的“用户”设置。 @Mike 是的,我有一种感觉,但我不太确定。我对 1 的工作不多。 请注意ConfigurationSettings
已过时,请使用System.Configuration.ConfigurationManager.AppSettings["MyKey"];
。
另外请注意,要使用System.Configuration.ConfigurationManager
,您的项目需要引用System.Configuration.dll
【参考方案2】:
澄清以前的答案...
向您的项目添加一个新文件(添加 → 新项目 → 应用程序配置文件)
李>新的配置文件将在解决方案资源管理器中显示为 App.Config。
使用以下模板将您的设置添加到此文件中
<configuration>
<appSettings>
<add key="setting1" value="key"/>
</appSettings>
<connectionStrings>
<add name="prod" connectionString="YourConnectionString"/>
</connectionStrings>
</configuration>
像这样检索它们:
private void Form1_Load(object sender, EventArgs e)
string setting = ConfigurationManager.AppSettings["setting1"];
string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
构建后,您的输出文件夹将包含一个名为 .exe.config 的文件。这将是 App.Config 文件的副本。开发人员无需进行任何进一步的工作即可创建此文件。
【讨论】:
这对我很有用。另外两点:在项目中添加新文件时,点击对话框左侧的General节点,发现Application Configuration File。为了在我的代码中使用 ConfigurationManager 类,我必须将 System.Configuration DLL 添加到我的引用中。【参考方案3】:快速阅读之前的答案,它们看起来是正确的,但似乎没有人提到 Visual Studio 2008 中的新配置工具。它仍然使用 app.config(复制于编译时间到 YourAppName.exe.config),但是有一个 UI 小部件可以设置属性并指定它们的类型。双击项目“Properties”文件夹中的 Settings.settings。
最好的部分是从代码中访问这个属性是类型安全的——编译器会发现一些明显的错误,比如错误地输入了属性名。例如,在 app.config 中名为 MyConnectionString 的属性将按如下方式访问:
string s = Properties.Settings.Default.MyConnectionString;
【讨论】:
这在 VS2005 中可用。 不错,但它(项目属性|设置)生成必须编译的代码。如果要更改设置,则需要向客户发布新的二进制文件。 @JohnL4 如果这些设置在“用户”范围内,那么您可以通过编程方式更改它,例如Settings.Default.Test = "abc"; Settings.Default.Save();
【参考方案4】:
您应该创建一个 App.config 文件(非常类似于 web.config)。
您应该右键单击您的项目,添加新项目,然后选择新的“应用程序配置文件”。
确保在项目中使用 System.Configuration 添加。
然后你可以给它添加值:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="setting1" value="key"/>
</appSettings>
<connectionStrings>
<add name="prod" connectionString="YourConnectionString"/>
</connectionStrings>
</configuration>
private void Form1_Load(object sender, EventArgs e)
string setting = ConfigurationManager.AppSettings["setting1"];
string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
请注意:According to Microsoft,您应该使用 ConfigurationManager 而不是 ConfigurationSettings(请参阅备注部分):
“ConfigurationSettings 类仅提供向后兼容性。对于新应用程序,您应该改用 ConfigurationManager 类或 WebConfigurationManager 类。”
【讨论】:
非常有帮助。解决了我对 T 的问题。 在 Visual Studio 2015 中:单击项目 > 添加引用。向下滚动到一半找到 System.Configuration 单击确定,然后按照 Nathan 的注释更新代码行。【参考方案5】:配置文件的默认名称是 [yourexe].exe.config。因此notepad.exe 将有一个名为notepad.exe.config 的配置文件,与程序位于同一文件夹中。这是 CLR 和框架所有方面的通用配置文件,但它可以在 <appSettings>
节点下包含您自己的设置。
<appSettings>
元素创建了一个名称-值对的集合,可以作为System.Configuration.ConfigurationSettings.AppSettings
访问。但是,无法将更改保存回配置文件。
还可以将您自己的自定义元素添加到配置文件中 - 例如,定义结构化设置 - 通过创建实现 IConfigurationSectionHandler
的类并将其添加到配置文件的 <configSections>
元素中。然后,您可以通过调用ConfigurationSettings.GetConfig
访问它。
.NET 2.0 添加了一个新类System.Configuration.ConfigurationManager
,它支持多个文件,每个用户覆盖每个系统数据。它还支持将修改后的配置保存回设置文件。
Visual Studio 会创建一个名为 App.config
的文件,并在构建项目时使用正确的名称将其复制到 EXE 文件夹中。
【讨论】:
【参考方案6】:关于 .NET 应用程序配置的最佳(恕我直言)文章位于 CodeProject,Unraveling the Mysteries of .NET 2.0 Configuration。我下一篇最喜欢(较短)的关于 .NET 配置文件中的部分的文章是 Understanding Section Handlers - App.config File。
【讨论】:
这确实不是用户要求的最简单的方法,但解开 .NET 2.0 配置的奥秘确实是一个很棒的系列文章。【参考方案7】:在 Windows 窗体中,您有 app.config
文件,它与 web.config
文件非常相似。但由于我看到您需要的是自定义值,我建议使用 Settings。
为此,请打开您的项目属性,然后转到设置。如果设置文件不存在,您将有一个链接来创建一个。然后,您可以将设置添加到您在那里看到的表中,这将生成适当的 XML,以及可用于加载和保存设置的 Settings 类。
设置类将命名为DefaultNamespace.Properties.Settings
。然后,您可以使用类似的代码:
using DefaultNamespace.Properties;
namespace DefaultNamespace
class Class
public int LoadMySettingValue()
return Settings.Default.MySettingValue;
public void SaveMySettingValue(int value)
Settings.Default.MySettingValue = value;
【讨论】:
【参考方案8】:我同意指向 app.config 的其他答案。但是,您应该创建一个实用程序类(AppSettings 是我使用的名称)来读取它们并将它们作为属性公开,而不是直接从 app.config 读取值。 AppSettings 类可用于聚合来自多个存储的设置,例如来自 app.config 的值和来自程序集(AssemblyVersion 和 AssemblyFileVersion)的应用程序版本信息。
【讨论】:
【参考方案9】:一个非常简单的方法是使用您的your own custom Settings
class。
【讨论】:
+1 用于在 msdn.microsoft.com/en-us/library/… 处的 ApplicationSettings 的不太详细的链接,这似乎比 ConfigurationManager 实现更简单。获取/设置设置,不关心“XML Shaping”。【参考方案10】:用途:
System.Configuration.ConfigurationSettings.AppSettings["MyKey"];
AppSettings 已被弃用,现在被认为已过时 (link)。
此外,app.config 的 appSettings 部分已替换为 applicationSettings 部分。
正如其他人提到的,您应该使用 System.Configuration.ConfigurationManager (link),这是 .NET 2.0 的新功能。
【讨论】:
不推荐使用 ConfigurationSettings 而不是 AppSettings。【参考方案11】:您使用的是哪个版本的 .NET 和 Visual Studio?
当您创建新项目时,您的解决方案中应该有一个名为 app.config 的文件。这是默认的配置文件。
【讨论】:
以上是关于在 Windows 窗体 C# 应用程序中拥有配置文件的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章