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 中选择并填充:
我们最终还将尝试传递其他变量,例如注册表路径和值等。
有人对我们如何使用 INI 有建议,或者对创建构建配置文件有更好的建议吗?
我研究过的资源:INI: https ://www.codeproject.com/Articles/1966/An-INI-file-handling-class-using-C
如果您愿意接受其他文件格式,我会使用 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)