单命令行多动词解析:多连接字符串更新的命令行库选型咨询
适合处理多连接字符串参数组的命令行解析库推荐
我之前开发控制台工具时也碰到过类似的需求——要一次性传入多组连接字符串参数,试过几个库后,给你推荐几个能很好支持这种重复参数组场景的选项:
1. System.CommandLine(微软官方推荐)
这是微软现在主推的命令行解析库,对嵌套/重复命令的支持非常到位。你可以定义一个conn子命令,让用户可以多次调用它来传入不同的连接字符串参数:
Installer.exe conn --servername "server1" --username "user1" --password "pass1" conn --servername "server2" --username "user2" --password "pass2"
在代码里,你只需要定义一个对应conn子命令的参数类,然后收集所有该子命令的执行实例,每个实例就对应一组完整的连接字符串参数,处理起来非常直观。
2. PowerArgs
这个库对多重复参数组的适配做得很灵活,你可以直接定义一个承载单组连接字符串的类,然后在主参数类里用[ArgMultiple]标记该类的数组属性:
public class ConnectionParams { [ArgShortcut("s")] public string ServerName { get; set; } [ArgShortcut("u")] public string Username { get; set; } [ArgShortcut("p")] public string Password { get; set; } } public class InstallerArgs { [ArgMultiple, ArgShortcut("conn")] public ConnectionParams[] Connections { get; set; } }
对应的命令行可以写成:
Installer.exe -conn -s "server1" -u "user1" -p "pass1" -conn -s "server2" -u "user2" -p "pass2"
完全符合你想要的参数传递格式,解析后直接就能拿到所有连接参数的数组。
3. McMaster.Extensions.CommandLineUtils
这是.NET社区里很受欢迎的一个库,API风格偏向传统控制台应用开发,同样支持重复子命令。你可以创建一个AddConnection子命令,允许用户多次输入该命令并携带对应参数,和System.CommandLine的思路类似,但上手可能更适合习惯旧版.NET开发的同学。
额外小技巧:不换库的临时方案
如果暂时不想切换库,也可以调整参数命名规则,比如用前缀区分不同连接字符串的参数:
Installer.exe --conn1-server "s1" --conn1-user "u1" --conn1-pass "p1" --conn2-server "s2" --conn2-user "u2" --conn2-pass "p2"
然后在代码里手动遍历所有参数,按前缀分组解析成连接字符串。不过这种方式不如用专门支持多参数组的库优雅,只是应急用的话可以考虑。
内容的提问来源于stack exchange,提问作者Raajkumar
相关产品推荐
相关产品推荐

