gpt4 book ai didi

c# - CommandLineParser - 值不变

转载 作者:行者123 更新时间:2023-11-30 16:38:21 25 4
gpt4 key购买 nike

我创建了一个小项目,它使用 CommandLineParser library .

我从指南 C# 快速入门 中获取了一小段代码:

using System;
using CommandLine;

namespace QuickStart
{
class Program
{
public class Options
{
[Option('v', "verbose", Required = false, HelpText = "Set output to verbose messages.")]
public bool Verbose { get; set; }
}

static void Main(string[] args)
{
Parser.Default.ParseArguments<Options>(args)
.WithParsed<Options>(o =>
{
if (o.Verbose)
{
Console.WriteLine($"Verbose output enabled. Current Arguments: -v {o.Verbose}");
Console.WriteLine("Quick Start Example! App is in Verbose mode!");
}
else
{
Console.WriteLine($"Current Arguments: -v {o.Verbose}");
Console.WriteLine("Quick Start Example!");
}
});
}
}
}

我可以通过命令提示符启动程序

dotnet CommandLineParserTestProject.dll

输出符合预期:

Current Arguments: -v False
Quick Start Example!

当我再放:

dotnet CommandLineParserTestProject.dll -v true

输出再次符合预期:

Verbose output enabled. Current Arguments: -v True
Quick Start Example! App is in Verbose mode!

现在的问题:

在上面的这两个命令之后,我输入:

dotnet CommandLineParserTestProject.dll -v false

但是输出仍然是:

Verbose output enabled. Current Arguments: -v True
Quick Start Example! App is in Verbose mode!

只有当我输入 dotnet CommandLineParserTestProject.dll false 时它才会改变,dotnet CommandLineParserTestProject.dll -v false 似乎不起作用。

有人知道为什么会这样吗?

最佳答案

bool 命令行选项不带参数(即 true/false);您要么包括它们,要么不包括它们。因此,命令行末尾的 true/false 参数将被忽略。当解析器看到 -v 选项时,详细输出会打开,而当您从命令行中省略 -v 时,详细输出会关闭。

回到文档,您应该考虑以推荐的方式处理未解析的选项:

.WithNotParsed<Options>((errs) => HandleParseError(errs));

...这会通知您您的 true/false 参数被忽略了。

关于c# - CommandLineParser - 值不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55261514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com