Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CommandLineParser-值未更改_C#_Command Line Arguments - Fatal编程技术网

C# CommandLineParser-值未更改

C# CommandLineParser-值未更改,c#,command-line-arguments,C#,Command Line Arguments,我创建了一个小项目,它使用 我从指南C#Quick Start中提取了一个小代码片段: using System; using CommandLine; namespace QuickStart { class Program { public class Options { [Option('v', "verbose", Required = false, HelpText = "Set output to verbos

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

我从指南C#Quick Start中提取了一个小代码片段:

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!");
                       }
               });
        }
    }
}
产出如预期:

Current Arguments: -v False
Quick Start Example!
Verbose output enabled. Current Arguments: -v True
Quick Start Example! App is in Verbose mode!
当我接着说:

dotnet CommandLineParserTestProject.dll -v true
输出与预期一样:

Current Arguments: -v False
Quick Start Example!
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
似乎不起作用


有人知道为什么会发生这种情况吗?

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

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

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

。。。它会通知您,您的真/假参数被忽略。

显然,它必须是
bool?
Nullable
)才能按预期工作