如何发现 CommandLineParser 出现错误,以便我可以 return 我自己的错误代码?

How to catch that there is an error from CommandLineParser so I can return my own error codes?

如何捕捉 CommandLineParser 的错误,以便我可以 return 我自己的错误代码? 当从 SSIS 调用我的控制台应用程序时,我需要 return 我自己的代码。

class Program
{
    static void Main(string[] args)
    {
        try
        {
            var myParserResult = Parser.Default.ParseArguments<UploadFileCommand, DownloadFileCommand, CompressFileCommand>(args)
                .WithParsed<ICommand>(t => t.Execute());

            var parsed = myParserResult as NotParsed<object>;

         
             if (parsed != null && parsed.Errors.Any())
             {
                Console.WriteLine("Has Errors");
             }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
        
    }

}

方法ParseArguments()将return一个ParserResult<T>对象来指示解析是否成功。如果解析不成功,NotParsed<T> instance is returned. This class has an Errors property to contain all the Error 实例说明了解析失败的原因。您可以在正常的 foreach() 循环中使用它来迭代发现的错误:

ParserResult<Options> result = parser.ParseArguments<Options>(args);
Console.WriteLine(result);
NotParsed<Options> notParsed = result as NotParsed<Options>;
if (notParsed != null)
{
    foreach (var error in notParsed.Errors)
    {
        Console.WriteLine(error);
    }
}

这可能会打印以下调试输出:

CommandLine.NotParsed`1[Testing.Options]
CommandLine.UnknownOptionError
CommandLine.UnknownOptionError