本文将详细介绍如何在.NET桌面程序中使用自定义的XML配置文件来保存和读取设置。除了XML之外,我们还将探讨其他常见的配置文件格式,如JSON、INI和YAML,以及它们的优缺点和相关的NuGet类库。最后,我们将重点介绍我们为何选择XML作为配置文件格式,并展示一个实用的示例。
在.NET桌面程序中,通常使用setting文件来保存程序的配置信息。使用setting文件的方法很简单,只需在项目中添加一个setting文件,然后通过Properties.Settings.Default来获取和保存设置即可。
我的开源项目 HackerScreenSaver 之前就是使用这种方式,但是当我在升级 Windows11 的内核版本后,发现当程序在被系统以屏保程序启动后,无法加载配置了。
如此这般就需要使用其他方式来存储配置文件了。毕竟,setting文件并非唯一可用于保存设置的方式。我们可以选择存储到注册表,或者自己写配置文件并保存。
对于一些简单的配置我们甚至可以直接写一个二进制文件,当然一般情况下我们还是选择常见格式的配置文件,比如:JSON、INI 和 YAML。
Newtonsoft.Json
(建议使用自带的 System.Text.Json
)迁移可参考相关教程。ini-parser
YamlDotNet
HackerScreenSaver 为了设计的小巧,根据合适原则和简单原则,我最终选择了不需要引入其他第三方的 XML 格式配置文件。
XML(eXtensible Markup Language)具有以下优点:
以下是我们设计的一个简单的配置类 SimpleSetting
,用于保存设置:
public class SimpleSetting
{
// 类的属性和构造函数省略...
///
/// 从文件中读取设置
///
/// 配置文件路径
public SimpleSetting(string path)
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(SimpleSetting));
using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open))
{
SimpleSetting ss = (SimpleSetting)xs.Deserialize(fs);
isLocal = ss.isLocal;
uInfo = ss.uInfo;
Opacity = ss.Opacity;
autoExit = ss.autoExit;
}
}
///
/// 保存设置到文件
///
/// 配置文件路径
public void Save(string path)
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(SimpleSetting));
using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create))
{
xs.Serialize(fs, this);
}
}
}
SimpleSetting
类中包含了从XML文件中读取设置和将设置保存到XML文件的方法。为了使用该类,我们只需要在程序中创建一个 SimpleSetting
对象,然后调用其 Save
和 Load
方法即可。这样,我们就可以在.NET桌面程序中使用自定义的XML配置文件来保存设置了。
本文详细介绍了如何在.NET桌面程序中使用自定义的 XML 配置文件以及为何选择 XML 作为配置文件格式。同时,我们还探讨了其他常见的配置文件格式,如 JSON、INI 和 YAML,以及它们的优缺点和相关的 NuGet 类库。希望这篇文章能帮助你找到适合你项目需求的配置文件解决方案!