标签: command-line-parser

命令行分析器库 - 布尔参数

我尝试将一个布尔参数传递给控制台应用程序,并使用命令行解析器库处理该值.

[Option('c', "closeWindow", Required = true, HelpText = "Close the window.")]
public bool CloseWindow { get; set; }
Run Code Online (Sandbox Code Playgroud)

我试图将参数传递为

-c false
-c False
-c "false"
-...
Run Code Online (Sandbox Code Playgroud)

没有差异,每次尝试我得到"true"的价值.

任何人都可以告诉我如何传递参数来获取布尔false值?

为了避免可能的问题,有一个正确传递的字符串选项:

[Option('s', "system", Required = true, HelpText = "Any help text")]
public string System { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# nuget-package command-line-parser

15
推荐指数
2
解决办法
5968
查看次数

将命令行选项设置为false

我正在使用我在C#控制台应用程序.NET Framework 4.0中通过NuGet获得的命令行解析器库.

这是我的选择课......

class Options
{
    [Option('p', "prompt", DefaultValue = true, HelpText = "Prompt the user before exiting the program.")]
    public bool PromptForExit { get; set; }

    [HelpOption]
    public string GetUsage()
    {
        return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我解析和使用选项的地方......

static void Main(string[] args)
{
    Options options = new Options();
    if (CommandLine.Parser.Default.ParseArguments(args, options))
    {
        if (options.PromptForExit)
        {
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种各样的命令,试图让它在退出前不提示我,但它们都没有工作.是否有人熟悉这个库或者想知道如何从命令行获取PromptForExit选项是假的?

这是我尝试过的.

myprogram.exe
myprogram.exe -p false
myprogram.exe -p False …
Run Code Online (Sandbox Code Playgroud)

.net c# command-line-parser

8
推荐指数
1
解决办法
3065
查看次数

HelpVerbOption不起作用 - 命令行解析器C#

我有一节课:

class Options
{
  // Remainder omitted (verb1, verb2, verb3)
  [HelpVerbOption]
  public string GetUsage(string verb)
  {
    return HelpText.AutoBuild(this, verb);
  }
}
Run Code Online (Sandbox Code Playgroud)

文档中(在最后一部分中)说:

...如果用户请求帮助索引,解析器也会将null传递给主类GetUsage(字符串):

$ git帮助

或者如果用户明确请求如何使用特定动词的说明,则使用verb命令:

$ git help commit

...

我尝试输入类型:MyApp.exe help verb1但只能看到基本帮助(好像我输入了错误的动词,help动词或其他内容).但我希望看到与指定动词相关的帮助消息.为什么它不起作用?

在您的应用程序中,它的功能是否正常工作?

c# command-line command-line-arguments command-line-parser

8
推荐指数
1
解决办法
841
查看次数

使用命令行分析程序库的列表/数组的默认值

使用Command Line Parser Library并使用具有默认值的列表或数组,默认值将打印为(Default:System.String []).有没有办法让它显示实际的默认值?

所以

[OptionList('l', "languages", Separator = ',', DefaultValue = new []{"eng"})]
public IList<string> Languages { get; set; }
Run Code Online (Sandbox Code Playgroud)

帮助文本打印为"(Default: System.String[]) ...".我想说"(Default: { "eng" })".

c# command-line command-line-arguments command-line-parser

7
推荐指数
1
解决办法
5040
查看次数

如何在使用 AddCommandLine 后检索 args 数组

我正在为控制台应用程序开发 POC,在设置中使用 AddCommandLine 后,我正在努力从配置中检索命令行值。

工程项目

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

节目类

public static class Program
    {
        public static async Task Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
            .Enrich.FromLogContext()
            .WriteTo.Console()
            .WriteTo.RollingFile("Logs//log.txt")
            .CreateLogger();

            await CreateHostBuilder(args)
                .Build()
                .RunAsync();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseSerilog()
                .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    config.AddJsonFile("settings.json", true, true);
                    config.AddCommandLine(args);
                })
                .ConfigureServices((hostcontext, services) =>
                {
                    services.AddHostedService<ConsoleApp>();
                });
    }
Run Code Online (Sandbox Code Playgroud)

控制台应用程序类

 public class ConsoleApp : IHostedService
    {
        private readonly IConfiguration config;
        private readonly ILogger<ConsoleApp> log;

        public ConsoleApp(IConfiguration configuration, ILogger<ConsoleApp> logger)
        { …
Run Code Online (Sandbox Code Playgroud)

command-line-parser .net-core

6
推荐指数
1
解决办法
3483
查看次数

使用CommandLineParser报告未知参数

有没有办法让Command Line Parser库报告未知参数?

给出以下选项类:

public class Options
{
    [Option('i', "int-option", DefaultValue = 10, HelpText = "Set the int")]
    public int IntOption { get; set; }

    [ParserState]
    public IParserState LastParserState { get; set; }

    [HelpOption]
    public string GetUsage()
    {
        return HelpText.AutoBuild(this, 
            HelpText.DefaultParsingErrorsHandler(this, current));
    }
}
Run Code Online (Sandbox Code Playgroud)

以下程序:

var options = new Options();
var parser = new Parser(settings =>
{
    settings.HelpWriter = Console.Error;
    settings.IgnoreUnknownArguments = false;
});

if (parser.ParseArgumentsStrict(args, options))
{
    Console.WriteLine("Int value set: {0}", options.IntOption);
}
Run Code Online (Sandbox Code Playgroud)

使用"MyProgram.exe --unknown"调用程序时,我只获取默认的使用信息,但没有提到解析失败的错误.我想向用户提供一些错误的指示.

c# command-line command-line-arguments command-line-parser

5
推荐指数
1
解决办法
2221
查看次数

如何通过gsscoder访问C#CommandLine Parser中的未绑定参数?

有一个由gsscoder编写的C#的CommandLine解析器库(它有自己的SO标签,我正在添加它).它以getopt样式解析命令行选项,即:

myprogram --foo --bar=baz abc def ghi
Run Code Online (Sandbox Code Playgroud)

它还可以具有所谓的"未绑定"参数,即不受选项约束的独立位置参数; 在以上这些的例子是abc,def,和ghi.不幸的是,文档只提到"解析器有办法处理这些",但没有给出一个例子.而且我的C#并不那么尖锐,所以我被扫描的源代码量吓到了.

有人可以举一个解析后如何访问这些未绑定参数的例子吗?

command-line-parser

5
推荐指数
1
解决办法
806
查看次数

解析 C# 中的命令行参数/选项

我有一个带有一些参数和选项的控制台应用程序,因此我想使用免费的第三方库。

我为此目的找到了两个库:NDesk.OptionsCommand Line Parser Library

最后,我决定使用命令行解析器库,因为使用属性更清晰,所以我下载了它并添加了对它的引用。

问题是,当添加对我的 .NET Framework 3.5 项目的引用时,我收到一个警告图标。从上面我下载的页面来看,它说兼容性是.NET Framework 3.5+,所以我知道3.5是兼容的,对吗?如果不是,哪个早期版本与 .NET Framework 3.5 兼容?

c# parsing command-line-parser qcommandlineparser

5
推荐指数
2
解决办法
2万
查看次数

您如何访问CommandLine Parsed &lt;T&gt;的Value属性?

如何访问已解析的CommandLine的Value属性?

尝试使用CommandLineParser

关于解析的Wiki部分说T的实例可以通过该Value属性进行访问... 如果解析成功,您将获得派生的Parsed类型,该类型通过其Value属性公开T的实例。

但我看不到的任何Value属性parserResult,只有一个Tag...

ParserResult<Options> parserResult = Parser.Default.ParseArguments<Options>(args);
WriteLine(parserResult.Tag);
Run Code Online (Sandbox Code Playgroud)

而且我知道我缺少一些东西,好像在调试一样,可以看到Value属性???

c# command-line-parser

5
推荐指数
1
解决办法
469
查看次数

C#CommandLineParser - 帮助打印然后停止

我正在构建一个C#控制台应用程序,它使用CommandLineParser从cmd获取一些参数.

默认情况下,该库已经带有--help(或help verb),以显示有关接受的每个参数的帮助信息.

现在,当我运行--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 …
Run Code Online (Sandbox Code Playgroud)

c# command-line-parser

5
推荐指数
1
解决办法
2087
查看次数

如何在 Visual Studio 2015 中查看 CommandLineParser 解析错误?

我试图查看使用CommandLineParser 包和 Visual Studio Professional 2015(更新 3)解析命令行参数时发生的错误。这是我正在使用的代码:

using System;
using System.IO;

namespace SampleParser
{
    class Program
    {
        static void Main(string[] args)
        {
            // Set the CommandLineParser configuration options.
            var commandLineParser = new CommandLine.Parser(x =>
            {
                x.MutuallyExclusive = true;
                x.HelpWriter = Console.Error;
                x.IgnoreUnknownArguments = false;
            });

            // Parse the command-line arguments.
            var options = new CommandLineOptions();
            var optionsAreValid = commandLineParser.ParseArguments(args, options);

            if (!optionsAreValid)
            {
                return;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我期待看到一些有关导致optionsAreValid设置为false的问题的有用信息出现在Debug > Windows > Output …

c# command-line-parser visual-studio-2015

3
推荐指数
2
解决办法
4717
查看次数