C#CommandLineParser

时间:2018-03-02 20:53:51

标签: c# command-line

尝试使用Microsoft.Extensions.Configuration.CommandLine。我认为这很容易,尽管缺乏文档(我能找到)。无论如何,请考虑这个小程序:

class Options
{
    [Option('s', "srcSrvr", 
        Default = "PROD", 
        HelpText = "Source server name")]
    public string SourceServer { get; set; }
}
public class Program
{
    public static void Main(string[] args)
    {
        var result = Parser.Default.ParseArguments<Options>(args);
        if (result.Tag == ParserResultType.NotParsed)
        {
            throw new ArgumentException("Invalid arguments supplied.");
        }

        Console.WriteLine(result.SourceServer);
    }
}

}

由于未定义“result.SourceServer”,程序将无法编译。好的,那么它在哪里?

2 个答案:

答案 0 :(得分:3)

标记Options班级public。如果没有访问修饰符,则默认值为internal,因此Parser类型(看起来位于不同的程序集中)无法看到它。

答案 1 :(得分:2)

得到了答案(顺便说一下,与var无关!)我需要将结果转换为Parser<Options>,它公开了一个Value属性,它具有我需要的Options实例。

感谢大家的欢呼。我总是对我在这里找到的广泛帮助印象深刻!