配置文件INI?XML?其他?

Inn*_*ree 0 c# xml ini function

我目前在一个学区工作,我们正在尝试为我们的工具包创建一个 C# exe。我们是 C# 新手,正在学习它,但由于它的灵活性而希望使用它。C# 工具包将用于自动设置新的或重新映像的计算机,其中包含我们选择的设置、程序、Regedit 更改和首选项。

我们有一个在 powershell 中硬编码的工作版本,我们正在将其转移到 c#。

我们当前面临的问题是如何使用设置/配置文件(例如 ini 或 xml)从函数和变量中提取通用信息并填充它们。这样我们就可以创建我们可以选择并运行的通用配置文件。例如:

[Server]
IP=172.1.0.10
Port=9999
PathToCSV=\\c:\Files.csv
[Client]
RestartComputerAfterScript=1
Install.Browser.Firefox=1
Install.Browser.Chrome=1
Install.Java=0
Install.PrinterLogic=1
SysConfig.TempLoc=d:\TEMP
Run Code Online (Sandbox Code Playgroud)

该 ini 文件将从我们的 C# GUI 中选择并填充:

  1. 使用值 1 运行脚本后计算机将重新启动
  2. Firefox 将使用值 1 安装
  3. 使用值 0 等将不会安装Java。

我们最终还将尝试传递其他变量,例如注册表路径和值等。

有人对我们如何使用 INI 有建议,或者对创建构建配置文件有更好的建议吗?

我研究过的资源:INI: https ://www.codeproject.com/Articles/1966/An-INI-file-handling-class-using-C

Ada*_*one 5

如果您愿意接受其他文件格式,我会使用 JSON,因为它简单且易于使用。

使用精彩的库Newtonsoft.Json

模态类:

class Server
{
    public string IP { get; set; }
    public int Port { get; set; }
    public string PathToCSV { get; set; }
}

class Client
{
    public bool RestartComputerAfterScript { get; set; }
    public List<string> Install { get; set; }
    public string TempLoc { get; set; }
}

class Config
{
    public Server ServerConfig { get; set; }
    public Client ClientConfig { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

配置.json:

{
    "ServerConfig": {
        "IP": "172.1.0.10",
        "Port": 9999,
        "PathToCSV": "C:\\Files.csv"
    },
    "ClientConfig": {
        "RestartComputerAfterScript": true,
        "Install": [
            "Firefox",
            "Chrome",
            "PrinterLogic"
        ],
        "TempLoc": "D:\\TEMP"
    }
}
Run Code Online (Sandbox Code Playgroud)

从磁盘读取文件:

public static Config Read(string path)
{
    return JsonConvert.DeserializeObject<Config>(System.IO.File.ReadAllText(path));
}
Run Code Online (Sandbox Code Playgroud)

保存配置文件:

public static void Write(string path, Config config)
{
    System.IO.File.WriteAllText(path, JsonConvert.SerializeObject(config, Formatting.Indented));
}
Run Code Online (Sandbox Code Playgroud)