C# CommandLineParser --help 打印然后停止
C# CommandLineParser --help printing then stopping
我正在构建一个 C# 控制台应用程序,它使用 CommandLineParser 从 cmd 获取一些参数。
默认情况下,该库已带有 --help(或帮助动词)以显示有关接受的每个参数的帮助信息。
现在,当我 运行 --help 命令时,我确实得到了帮助屏幕,但随后程序继续运行,但它中断了,因为其他默认参数未设置。
代码如下所示:
class Options
{
[Option('f', "force", Required = false, Default = false,
HelpText = "Force ....")]
public bool Force { get; set; }
[Option('v', "version", Required = false, Default = "",
HelpText =
"....")]
public string Version { get; set; }
[Option('s', "silent", Required = false, Default = false, HelpText = "Disables output ...")]
public bool Output { get; set; }
[Option('p', "path", Required = false, Default = "../some/dir/",
HelpText =
"Specifies the path ...")]
public string StartPath { get; set; }
}
然后在程序中:
static int Main(string[] args)
{
try
{
var opts = new Options();
Parser.Default.ParseArguments<Options>(args).WithParsed(parsed => opts = parsed);
string version = opts.Version;
PATCH_LOCATION = opts.StartPath;
....
所以我得到帮助屏幕,然后程序保持 运行ning(由于 opts.StarPath 未设置而中断,其他任何默认值也未设置)。
知道在收到 "help" 命令时如何 "exit" 程序吗?
注意:如果使用未知参数,CommandLineParser 也会抛出一个帮助屏幕,这也应该退出程序。
您应该检查 WithParsed
返回的 ParseResult
:
var result = Parser.Default
.ParseArguments<Options>(args)
.WithParsed(parsed => opts = parsed);
if (result.Tag == ParserResultType.NotParsed)
{
// Help text requested, or parsing failed. Exit.
return 1;
}
(我相信请求帮助等同于解析失败。绝对值得检查。)
我正在构建一个 C# 控制台应用程序,它使用 CommandLineParser 从 cmd 获取一些参数。
默认情况下,该库已带有 --help(或帮助动词)以显示有关接受的每个参数的帮助信息。
现在,当我 运行 --help 命令时,我确实得到了帮助屏幕,但随后程序继续运行,但它中断了,因为其他默认参数未设置。
代码如下所示:
class Options
{
[Option('f', "force", Required = false, Default = false,
HelpText = "Force ....")]
public bool Force { get; set; }
[Option('v', "version", Required = false, Default = "",
HelpText =
"....")]
public string Version { get; set; }
[Option('s', "silent", Required = false, Default = false, HelpText = "Disables output ...")]
public bool Output { get; set; }
[Option('p', "path", Required = false, Default = "../some/dir/",
HelpText =
"Specifies the path ...")]
public string StartPath { get; set; }
}
然后在程序中:
static int Main(string[] args)
{
try
{
var opts = new Options();
Parser.Default.ParseArguments<Options>(args).WithParsed(parsed => opts = parsed);
string version = opts.Version;
PATCH_LOCATION = opts.StartPath;
....
所以我得到帮助屏幕,然后程序保持 运行ning(由于 opts.StarPath 未设置而中断,其他任何默认值也未设置)。
知道在收到 "help" 命令时如何 "exit" 程序吗?
注意:如果使用未知参数,CommandLineParser 也会抛出一个帮助屏幕,这也应该退出程序。
您应该检查 WithParsed
返回的 ParseResult
:
var result = Parser.Default
.ParseArguments<Options>(args)
.WithParsed(parsed => opts = parsed);
if (result.Tag == ParserResultType.NotParsed)
{
// Help text requested, or parsing failed. Exit.
return 1;
}
(我相信请求帮助等同于解析失败。绝对值得检查。)