C# 用于.NET的强大且友好的命令行工具?
忘掉那些花里胡哨的网页吧。我正在寻找一个好的.NET CLI参数处理实用程序,更喜欢开源代码。这适用于需要健壮、友好的命令行参数处理的快速而肮脏的实用程序 这些是可能需要一天努力的实用程序。花几天时间编写好的命令行处理似乎有些过头了。。。但他们真的需要它 我喜欢命令行处理程序中的功能。如果任何开源项目有以下两个或三个,我都会非常兴奋C# 用于.NET的强大且友好的命令行工具?,c#,.net,vb.net,command-line,mono,C#,.net,Vb.net,Command Line,Mono,忘掉那些花里胡哨的网页吧。我正在寻找一个好的.NET CLI参数处理实用程序,更喜欢开源代码。这适用于需要健壮、友好的命令行参数处理的快速而肮脏的实用程序 这些是可能需要一天努力的实用程序。花几天时间编写好的命令行处理似乎有些过头了。。。但他们真的需要它 我喜欢命令行处理程序中的功能。如果任何开源项目有以下两个或三个,我都会非常兴奋 语法一致,但不一定是posix 能够为耕地提供短名称。例如,“msbuild/t”=“msbuild/target” 它支持良好的命令行解析,然后就不再妨碍了。我
- 语法一致,但不一定是posix李>
- 能够为耕地提供短名称。例如,“msbuild/t”=“msbuild/target”
- 它支持良好的命令行解析,然后就不再妨碍了。我想要我的代码使用的一些,而不是在我的代码上强加模式的东西,例如,我不想用事件之类的东西来响应arg的存在李>
- 关注点的分离足够好,它的逻辑可以进行单元测试李>
- 哦-要求它读取类属性的属性(如.NET配置类中的属性)有两个要求吗李>
- 我喜欢msbuild中的配置文件覆盖。我可以在生成文件中设置属性,但可以在命令行上重写李>
- 内置的“显示用法”。文件(cscript.exe)具有此功能。不过,我不愿意编写jscript来获得命令行处理李>
- 不是地狱。我在公司里找不到任何人能忍受Powershell语法
- 强制命令行参数的顺序
- 指定开关选项并限制它们作为命令行参数出现的次数
- 允许为开关选项指定参数,并限制可以指定的参数数量
- 指定非开关参数及其使用方式
- 对开关参数和非开关参数运行自定义验证,包括对正则表达式、文件掩码、整数、布尔值、枚举等的测试
- 自动将非开关参数映射到强类型属性,以提高可读性
- 执行ConsoleFx无法以声明方式执行的自定义验证
- 短选项(-s,例如)
- 选项+值/无空格:-sHello
- 选项+空格+值:-s您好
- 短选项,如开关;不需要任何值
- 选项+空格+选项+-s-x-y-z
- 选项+选项+选项+…:-sxyz
- 选项+选项+空间/任意梳。:/sx-yz
- 长选项(--Long,例如)
- 选项+相等+值:--long=Hello
- 选项+空格+值:--long Hello
- 组合选项(关于值)
- 任何1;2.3.4(可配置分隔符)
两者都接受带空格的值:-s“Hello World!”--long“Hello CLR!”您应该查看Mono.Options(),因为它对跨平台友好得多,并且在Mono本身中广泛使用 我创建了一个以(Linq)友好的方式为您执行PASSING的程序。例如,此命令行:
-country=Sweden -IsNiceCountry -Country="The Netherlands" /empty= /space=" "
让所有国家:
var parameters = new ParametersParser();
parameters.GetParameters("-country")
带空字符串的参数:
parameters.GetFirstValue("/Empty")
该键没有值:
parameters.HasKeyAndNoValue("-IsNiceCountry")
密钥不存在(返回false):
还有更多…聪明的想法,但我发现他们“巧妙地使用lambda”令人讨厌。不稳定。将窃取一些想法。Mono的大事件。选项-令人恼火的是主页上的示例和入门指南实际上没有编译/工作,你必须弄清楚新的参数是什么,例如,这里描述的描述方法在当前版本中不存在,并且没有对论坛帖子的回应,尽管它是一个很好的库,已经说了这么多了
parameters.HasKey("/notExist")