问题标签 [ndesk.options]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
13932 浏览

c# - 如何使用 NDesk.Options 强制执行所需的命令行选项?

我只是在编写一个控制台实用程序,并决定使用 NDesk.Options 进行命令行解析。我的问题是,如何强制执行所需的命令行选项?

我在文档中看到:

具有必需值(将“=”附加到选项名称)或可选值(将“:”附加到选项名称)的选项。

但是,当我将 a=放在选项名称的末尾时,行为没有区别。理想情况下,Parse 方法会抛出异常。

还有什么我需要做的吗?

这是我的测试代码:

0 投票
1 回答
216 浏览

c# - 控制台应用程序没有参数时不执行默认方法

下面的默认功能在我执行时没有被执行myExe.exe,但是在我运行时它正在执行myExe.exe -launch。关于为什么此应用程序默认不执行的任何想法?根据文档,这应该可以

文档摘录:

我的代码:

0 投票
2 回答
1885 浏览

c# - 如何让 NDesk 在命令行解析多参数列表?

如何让 NDesk 在命令行 (C#) 解析多参数列表?

我有两个标志,它们都带有多个参数(文件列表)。所以一个是-j,另一个是-c。但我认为 NDesk 要求这些参数中的每一个都以 -j/-c 开头)

例如我想要:

并让它生成 2 个列表,一个包含 .j 文件,另一个包含 .c 文件。但是,它希望以这种方式列出的每个文件前面都有标志。

所以这将起作用:

虽然我宁愿拥有第一个版本。

有没有办法用 NDesk.Options 库做到这一点?我已经阅读了大部分文档,但我认为不是。

0 投票
2 回答
946 浏览

c# - 为什么 ManyConsole 显示 CommandLine 类的公共成员?

我将ManyConsole用作控制台应用程序的命令行命令和选项解析器。所有的命令都被定义为一个命令类,它派生自ConsoleCommand,然后实现一个特定的任务。ParkPayConsoleCommand我定义了一个从该类派生的中间基类:

然后我所有的命令类都从我的基类派生,并享受内置的DbContext,例如:

正如您在上面看到的,每个命令类都命名和描述自身,并在其构造函数中定义其命令行选项,这是一个 ManyConsole 约定。通常,当我运行上述命令时ReadStartsCommand,它只会写入控制台正在运行的命令,而不是我传递的选项。

然而,当我ParkPayConsoleCommand.DbContext公开而不是受保护时,它会输出字符串

DbContext : ParkPay.Model.Context.ParkPayDbContext

运行命令的名称和描述末尾的控制台。为什么它DbContext没有在任何地方定义为命令选项本身时这样做。这可能看起来微不足道,但本质上我问的是一个非常重要的“元问题”,那就是:ManyConsole 是否将其命令类的所有公共属性隐式解释为命令选项,即使它们没有明确声明为命令选项?

0 投票
4 回答
3215 浏览

c# - 仅当设置了调试变量时,log4net 才会记录调试消息

我有一个控制台应用程序,它目前使用 log4net 设置将信息记录到控制台输出。

我有各种log.Debug("Debug info")语句,如果我的应用程序中设置了调试标志,我只想打印到控制台。

调试变量是通过读取调用时传递给应用程序的开关来设置的。使用 读取参数NDesk.Options

我想避免将每个调试语句包装在 if 中:-

我可以在<log4net><appender>配置部分中添加什么来启用它,还是有一种方法可以覆盖 log.Debug 来提供逻辑?

0 投票
2 回答
4997 浏览

c# - 如何在 C# 中使用 NDesk 选项解析一个简单的项目列表

我是 NDesk.Options 库的新手。无法找出解析简单项目列表的最简单方法。

示例: prog --items=item1 item2 item3 (我想在代码中使用 List items)

它应该支持引用以及我想将项目列表用作文件或目录名称的列表。

prog --items="c:\a\b\c.txt" "c:\prog files\d.txt" prog --dirs="c:\prog files\" "d:\x\y\space在目录名中”

0 投票
1 回答
298 浏览

c# - 使用 NDesk.Options 在命令行参数中标记优先级。C#

我目前正在使用 NDesk.Options 来操作我的命令行参数。我现在遇到的问题是,当我使用多个标志运行时,计算是按照标志出现的顺序完成的。但这并不总是我想要的。例如对于这些论点

-t 20 -g 邮件组

我希望首先计算 -g 标志(加载 mailGroup 数据),然后计算 -t 20 (这是某些分析的前 20 名)。这适用于“-g mailGroup -t 20”

此外,如果没有加载任何内容,我的 -t 20 将不起作用,因此基本上 -g mailGroup 是 -t 20 之前的必需选项。

有没有一种优雅的方式来为这些标志提供评估优先级?也可能处理一个标志需要在它之前计算另一个标志的子集的情况(例如,我有多种加载方式和形式,而不仅仅是-g)。

0 投票
1 回答
1715 浏览

c# - 使用 NDesk.Options 设置可选值

使用接受的答案以最佳方式解析 C# 中的命令行参数?作为你的例子,我怎样才能让'r'或'repeat'选项只可选地取一个值而不是REQUIRE它,如果没有提供该值,我该如何设置一个默认值?谢谢!

0 投票
0 回答
225 浏览

c# - C# NDesk 选项,带有多个值的标志

想知道是否有人可以帮助我。在 C# 控制台应用程序中,使用 NDESK.Options,如果用户选择某个标志(对于本示例,我们说“其他”),我需要确保传递了 4 个值(这反过来将填充 4 个变量)。

例子:

0 投票
1 回答
138 浏览

c# - 如何使用 ndesk 选项添加一个需要三个参数的选项?

我想-D=Id1:Id2:Id3在我的命令行选项集中添加一个选项。我怎样才能做到这一点 ?此选项必须是强制性的。

我试图这样做:

但我收到错误说该操作只需要 2 个参数。