【问题标题】:CommandLine Parser verb not recognized命令行解析器动词无法识别
【发布时间】:2022-01-09 23:12:05
【问题描述】:

我正在使用命令行解析器来解析 2 个动词。这是一个代码sn-p:

 [Verb("Option1")]
 public class VerbOption1
 {
     [Option('o', "option1")]
     public string Option1 { get; set; }
 }

 [Verb("Option2")]
 public class VerbOption2
 {
     [Option('t', "option2")]
     public string Option2 { get; set; }
 }

Parser.Default.ParseArguments<VerbOption1, VerbOption2>(args)
 .WithParsed<VerbOption1>(option1 => doSomething(option1))
 .WithParsed<VerbOption2>(option2 => doSomethingElse(option2));

我遇到的问题是我收到一条错误消息,指出无法识别动词“x”。如果我只使用 1 个动词,那么它可以工作。但是,一旦我添加第二个动词,我就会收到此错误。

谁能帮助澄清发生了什么以及如何解决此错误?

我们将不胜感激。

谢谢

【问题讨论】:

  • 我可能会离开,但是您检查过github.com/commandlineparser/commandline 上的示例吗?它使用 MapResult 方法:CommandLine.Parser.Default.ParseArguments(args) .MapResult( (AddOptions opts) => RunAddAndReturnExitCode(opts), (CommitOptions opts) => RunCommitAndReturnExitCode(opts), (CloneOptions opts) => RunCloneAndReturnExitCode(opts), errs => 1);
  • 我查看了文档,但是,问题在于对 ParseArguement 的调用。为了使用 MapResult,ParseArguement 必须返回一个已解析的对象,而事实并非如此。在我调用 MapResult 之前,它失败了,动词无法识别。
  • 您能否也包括您的“动词”的代码? VerbOption1 和 VerbOption2
  • 好!你可以为你的问题写一个正确的答案,而不是把它放在 cmets 中。

标签: c# .net-core command-line-parser


【解决方案1】:

我发现了这个问题。确保分配给类的动词属性具有名称。在命令行中使用该名称,后跟您的选项。这对我来说是个问题。我正在使用命令行,就像我仍在处理单个动词一样,因此省略了动词名称。解析多个动词时需要动词名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2012-01-27
    相关资源
    最近更新 更多