You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断在System.CommandLine中是否使用了--help选项?

如何检测System.CommandLine自动添加的--help/-h/-?选项是否被使用?

你已经掌握了自定义选项的检测和取值方法,对于System.CommandLine自动注入的help选项,无法直接通过常规handler参数获取,但可以通过以下两种方式判断它是否被用户提供:

方法一:通过InvocationContext获取解析结果

利用InvocationContext中的ParseResult对象,可以检查所有被解析的选项,包括自动添加的help选项:

var rootCommand = new RootCommand("File Builder App");
// 自定义输出选项
var outputOption = new Option<string>(new[] { "-o", "--output" }, "Path to desired output folder.");
rootCommand.AddOption(outputOption);

rootCommand.SetHandler((outputPath, context) => 
{
    // 检查help选项是否被触发,支持任意别名
    bool helpRequested = context.ParseResult.HasOption("--help") 
                       || context.ParseResult.HasOption("-h") 
                       || context.ParseResult.HasOption("-?");

    if (helpRequested)
    {
        Console.WriteLine("用户触发了帮助选项");
    }
    else
    {
        Console.WriteLine($"输出路径: {outputPath ?? "未指定"}");
    }
}, outputOption, InvocationContext.Current);

ParseResult.HasOption()方法可以传入选项的任意名称或别名,返回布尔值表示该选项是否被用户在命令行中提供。

方法二:替换默认help选项,转为自定义选项处理

如果需要更直接的控制,可以手动注册一个help选项替换默认的,这样就能像自定义选项一样在handler中直接接收值:

// 自定义help选项,覆盖默认的自动注入选项
var helpOption = new Option<bool>(new[] { "-h", "--help", "-?" }, "显示帮助信息")
{
    IsHidden = false // 保持可见,和默认help选项行为一致
};

var rootCommand = new RootCommand("File Builder App");
rootCommand.AddGlobalOption(helpOption);

// 自定义输出选项
var outputOption = new Option<string>(new[] { "-o", "--output" }, "Path to desired output folder.");
rootCommand.AddOption(outputOption);

rootCommand.SetHandler((outputPath, showHelp) => 
{
    if (showHelp)
    {
        Console.WriteLine("用户触发了帮助选项");
        // 如需显示默认帮助内容,可手动调用Invoke触发
        rootCommand.Invoke("--help");
    }
    else
    {
        Console.WriteLine($"输出路径: {outputPath ?? "未指定"}");
    }
}, outputOption, helpOption);

这种方式下,当用户输入-h/--help/-?时,showHelp参数会被设为true,直接在handler中判断即可。

内容的提问来源于stack exchange,提问作者hribayz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:42:19