尝试使用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”,程序将无法编译。好的,那么它在哪里?
答案 0 :(得分:3)
标记Options
班级public
。如果没有访问修饰符,则默认值为internal
,因此Parser
类型(看起来位于不同的程序集中)无法看到它。
答案 1 :(得分:2)
得到了答案(顺便说一下,与var无关!)我需要将结果转换为Parser<Options>
,它公开了一个Value属性,它具有我需要的Options实例。
感谢大家的欢呼。我总是对我在这里找到的广泛帮助印象深刻!