如何让System.CommandLine支持--date=2023-02-06格式的命令行参数?
让System.CommandLine支持
--date=2023-02-06格式的方法 System.CommandLine默认就支持--选项名=值这种等号连接的参数格式,无需额外配置。如果你的代码目前不支持,大概率是使用方式有误,以下是正确的实现示例及问题排查点:
正确实现示例
using System.CommandLine; var rootCommand = new RootCommand("日期参数测试工具"); var dateOption = new Option<DateOnly>("--date", description: "需要指定的日期"); rootCommand.AddOption(dateOption); rootCommand.SetHandler((DateOnly date) => { Console.WriteLine($"解析后的日期:{date.ToString("yyyy-MM-dd")}"); }, dateOption); await rootCommand.InvokeAsync(args);
用上述代码测试两种参数格式:
- 空格分隔:
dotnet run --date 2023-02-06 - 等号连接:
dotnet run --date=2023-02-06
两种格式都能正确解析出日期值。
常见问题排查
如果仍然无法支持等号格式,检查以下几点:
- 确认使用的是System.CommandLine的正式稳定版本(避免预览版存在的兼容性问题)
- 检查是否自定义了参数解析器,覆盖了库的默认解析逻辑
- 确认选项定义时未设置特殊约束,导致等号格式被拦截
内容的提问来源于stack exchange,提问作者Atlass-
相关产品推荐
相关产品推荐

