本文將詳細介紹如何在.NET桌面程序中使用自定義的XML配置文件來保存和讀取設置。除了XML之外,我們還將探討其他常見的配置文件格式,如JSON、INI和YAML,以及它們的優缺點和相關的NuGet類庫。最后,我們將重點介紹我們為何選擇XML作為配置文件格式,并展示一個實用的示例。
在.NET桌面程序中,通常使用setting文件來保存程序的配置信息。使用setting文件的方法很簡單,只需在項目中添加一個setting文件,然后通過Properties.Settings.Default來獲取和保存設置即可。
我的開源項目 HackerScreenSaver[1] 之前就是使用這種方式,但是當我在升級 Windows11 的內核版本后,發現當程序在被系統以屏保程序啟動后,無法加載配置了。
如此這般就需要使用其他方式來存儲配置文件了。畢竟,setting文件并非唯一可用于保存設置的方式。我們可以選擇存儲到注冊表,或者自己寫配置文件并保存。
對于一些簡單的配置我們甚至可以直接寫一個二進制文件,當然一般情況下我們還是選擇常見格式的配置文件,比如:JSON、INI 和 YAML。
1.JSON(JavaScript Object Notation) 格式?優點:易于閱讀和編寫,支持復雜的數據結構,廣泛應用于Web API和前端開發。?缺點:根據 JSON 規范,其是不支持注釋的(單獨 Json 文件在某些編輯器可以正確解析注釋,在 .NET Core 中通過 JSON 配置提供程序讀取配置時,也可以在配置文件中添加注釋)。?相關類庫:Newtonsoft.Json
(建議使用自帶的 System.Text.Json
),可參考相關遷移教程[2]。2.INI(Initialization File)?優點:簡潔,易于閱讀和編輯,適用于存儲簡單的鍵值對。?缺點:不支持復雜的數據結構和類型。?相關類庫:ini-parser
3.YAML(Yet Another Markup Language)?優點:簡潔,易于閱讀和編輯,支持復雜的數據結構,支持注釋。?缺點:縮進敏感,可能導致錯誤。?相關類庫:YamlDotNet
HackerScreenSaver 為了設計的小巧,根據合適原則和簡單原則,我最終選擇了不需要引入其他第三方的 XML 格式配置文件。
XML(eXtensible Markup Language)具有以下優點:
?可擴展性強,支持復雜的數據結構。?支持注釋,便于理解和維護。?作為標準的數據交換格式,易于與其他系統集成。
以下是我們設計的一個簡單的配置類 SimpleSetting
,用于保存設置:
public class SimpleSetting
{
// 類的屬性和構造函數省略...
/// <summary>
/// 從文件中讀取設置
/// </summary>
/// <param name="path">配置文件路徑</param>
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;
}
}
/// <summary>
/// 保存設置到文件
/// </summary>
/// <param name="path">配置文件路徑</param>
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 類庫。希望這篇文章能幫助你找到適合你項目需求的配置文件解決方案!
[1]
HackerScreenSaver: https://github.com/sangyuxiaowu/HackerScreenSaver?wt.mc_id=DT-MVP-5005195[2]
相關遷移教程: https://learn.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json/migrate-from-newtonsoft?wt.mc_id=DT-MVP-5005195
本文將詳細介紹如何在.NET桌面程序中使用自定義的XML配置文件來保存和讀取設置。除了XML之外,我們還將探討其他常見的配置文件格式,如JSON、INI和YAML,以及它們的優缺點和相關的NuGet類庫。最后,我們將重點介紹我們為何選擇XML作為配置文件格式,并展示一個實用的示例。
在.NET桌面程序中,通常使用setting文件來保存程序的配置信息。使用setting文件的方法很簡單,只需在項目中添加一個setting文件,然后通過Properties.Settings.Default來獲取和保存設置即可。
我的開源項目 HackerScreenSaver[1] 之前就是使用這種方式,但是當我在升級 Windows11 的內核版本后,發現當程序在被系統以屏保程序啟動后,無法加載配置了。
如此這般就需要使用其他方式來存儲配置文件了。畢竟,setting文件并非唯一可用于保存設置的方式。我們可以選擇存儲到注冊表,或者自己寫配置文件并保存。
對于一些簡單的配置我們甚至可以直接寫一個二進制文件,當然一般情況下我們還是選擇常見格式的配置文件,比如:JSON、INI 和 YAML。
1.JSON(JavaScript Object Notation) 格式?優點:易于閱讀和編寫,支持復雜的數據結構,廣泛應用于Web API和前端開發。?缺點:根據 JSON 規范,其是不支持注釋的(單獨 Json 文件在某些編輯器可以正確解析注釋,在 .NET Core 中通過 JSON 配置提供程序讀取配置時,也可以在配置文件中添加注釋)。?相關類庫:Newtonsoft.Json
(建議使用自帶的 System.Text.Json
),可參考相關遷移教程[2]。2.INI(Initialization File)?優點:簡潔,易于閱讀和編輯,適用于存儲簡單的鍵值對。?缺點:不支持復雜的數據結構和類型。?相關類庫:ini-parser
3.YAML(Yet Another Markup Language)?優點:簡潔,易于閱讀和編輯,支持復雜的數據結構,支持注釋。?缺點:縮進敏感,可能導致錯誤。?相關類庫:YamlDotNet
HackerScreenSaver 為了設計的小巧,根據合適原則和簡單原則,我最終選擇了不需要引入其他第三方的 XML 格式配置文件。
XML(eXtensible Markup Language)具有以下優點:
?可擴展性強,支持復雜的數據結構。?支持注釋,便于理解和維護。?作為標準的數據交換格式,易于與其他系統集成。
以下是我們設計的一個簡單的配置類 SimpleSetting
,用于保存設置:
public class SimpleSetting
{
// 類的屬性和構造函數省略...
/// <summary>
/// 從文件中讀取設置
/// </summary>
/// <param name="path">配置文件路徑</param>
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;
}
}
/// <summary>
/// 保存設置到文件
/// </summary>
/// <param name="path">配置文件路徑</param>
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 類庫。希望這篇文章能幫助你找到適合你項目需求的配置文件解決方案!
[1]
HackerScreenSaver: https://github.com/sangyuxiaowu/HackerScreenSaver?wt.mc_id=DT-MVP-5005195[2]
相關遷移教程: https://learn.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json/migrate-from-newtonsoft?wt.mc_id=DT-MVP-5005195