0

我必须解析一个强加的命令行,它将单/双破折号 args、args 与= 作为分隔符等混合在一起(不是很合适....)

命令行就像myexe.exe -Url=https://blabla.com/ --TestValue=val1 -monoapp -Ctx "default ctx" Open -Test2=CO0ZJP6f-ca

我正在尝试使用commandlineparser来做到这一点。(我想它能够做到这一点,对吧?)

所以首先我试图解析第一个参数(myexe.exe -Url=https://blabla.com/)。


public class CommandLineOptions
{
   [Option("Url", Required = true)]
   public string Url { get; set; }
}

....... In another file but in the  same  assembly

static void Main(string[] args) // args[0] = "-Url=https://blabla.com/" 
{

   var commandLineOptions = new CommandLineOptions();


   var parseResult = Parser.Default.ParseArguments<CommandLineOptions>(args).WithParsed(result => commandLineOptions = result);

   System.Console.WriteLine(parseResult.Tag); //NotParsed
   System.Console.WriteLine(commandLineOptions.Url);
}

使用该代码,我有 2 个错误CommandLine.MissingRequiredOptionErrorCommandLine.UnknownOptionError.

MissingRequiredOptionError因为找不到 Url 参数而产生)

所以你知道我的错误在哪里吗?

在此先感谢您的帮助 ;)

4

1 回答 1

0

所以最终开发人员commandlineparser说无法解析它。单行选项必须是一个字符选项。绕过它的唯一方法是预处理参数。

我这样做了,它正在工作,但它不允许短选项组合(tar -xvf例如)

args = args.Select(arg => Regex.IsMatch(arg, "^-\\w{2,}") ? "-" + arg : arg ).ToArray();
于 2020-08-20T07:52:22.643 回答