代码之家  ›  专栏  ›  技术社区  ›  Precipitous

用于.NET的强大且友好的命令行工具?[闭门]

  •  7
  • Precipitous  · 技术社区  · 15 年前

    这些是可能需要一天努力的实用程序。花几天时间编写好的命令行处理似乎有些过头了。。。但他们真的需要它。

    我喜欢命令行处理程序中的功能。如果任何开源项目有以下两个或三个,我都会非常兴奋。

    • 一致的语法, posix had a nice command line standard
    • 信息技术 支持 好的命令行解析然后就可以了。我想要我的代码使用的一些,而不是在我的代码上强加模式的东西,例如,我不想用事件之类的东西来响应arg的存在。
    • 关注点的分离足够好,它的逻辑可以进行单元测试。
    • 哦-要求它读取类属性的属性(如.NET配置类中的属性)有两个要求吗?
    • 内置的“显示用法”。 WSF 文件(cscript.exe)具有此功能。不过,我不愿意编写jscript来获得命令行处理。
    • 不是地狱。我在公司里找不到任何人能忍受Powershell语法。

    PS如果我找不到这样的东西,我可能会在接下来的几周内在谷歌代码上放一个

    5 回复  |  直到 15 年前
        1
  •  7
  •   Bevan    15 年前

    同样来自codePlex的 CommandLine 这个项目似乎符合你们的要求。从项目主页复制/粘贴的自由应用程序提供。。。

    命令行解析器库为CLR应用程序提供了一个用于操作命令行输入的简单编程接口。此库允许您显示具有良好自定义程度的帮助屏幕。API将所有枯燥的代码都放在自己的肩上。

    命令分析器库支持:

    • 短选项(-s,例如)

      • 选项+空格+值:-s您好
    • 短选项,如开关;不需要任何值

      • 选项+选项+选项+…:-sxyz。。。
      • 选项+选项+空间/任意梳。:/sx-yz
    • 长选项(--Long,例如)

      • 选项+相等+值:--long=Hello
      • 选项+空格+值:--long Hello

    共同特征

    两者都接受带空格的值:-s“Hello World!”--long“Hello CLR!”

        2
  •  7
  •   Rafael Ferreira    15 年前

    你应该看看Mono.Options( http://www.ndesk.org/Options

        3
  •  2
  •   Bevan    15 年前

    来自CodePlex, ConsoleFX 似乎符合你的要求。从项目主页复制/粘贴的自由应用程序提供。。。

    使用ConsoleFx命令行解析器,您可以声明性地指定用于指定命令行参数的全部条件。这些能力包括:

    • 强制命令行参数的顺序
    • 允许为开关选项指定参数,并限制可以指定的参数数量
    • 指定非开关参数及其使用方式
    • 对开关参数和非开关参数运行自定义验证,包括对正则表达式、文件掩码、整数、布尔值、枚举等的测试。
    • 自动将非开关参数映射到强类型属性,以提高可读性
    • 执行ConsoleFx无法以声明方式执行的自定义验证

        4
  •  0
  •   itowlson    15 年前
        5
  •  0
  •   Alex Siepman    4 年前

    我创造了一个 command line parsing class 这对你来说是一种友好的方式。例如,此命令行:

    -country=Sweden -IsNiceCountry   -Country="The Netherlands" /empty= /space=" "
    

    让所有国家:

    var parameters = new ParametersParser();
    parameters.GetParameters("-country")
    

    带空字符串的参数:

    parameters.GetFirstValue("/Empty")
    

    该键没有值:

    parameters.HasKeyAndNoValue("-IsNiceCountry")
    

    密钥不存在(返回false):

    parameters.HasKey("/notExist")
    

    还有更多。。。